explorepy 4.3.0__tar.gz → 4.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. {explorepy-4.3.0 → explorepy-4.3.1}/.bumpversion.cfg +1 -1
  2. {explorepy-4.3.0 → explorepy-4.3.1}/CHANGELOG.rst +6 -0
  3. {explorepy-4.3.0 → explorepy-4.3.1}/PKG-INFO +3 -3
  4. {explorepy-4.3.0 → explorepy-4.3.1}/README.rst +2 -2
  5. {explorepy-4.3.0 → explorepy-4.3.1}/docs/conf.py +1 -1
  6. {explorepy-4.3.0 → explorepy-4.3.1}/docs/usage.rst +4 -5
  7. {explorepy-4.3.0 → explorepy-4.3.1}/pyproject.toml +1 -1
  8. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/__init__.py +1 -1
  9. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/cli.py +1 -1
  10. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/explore.py +20 -4
  11. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/parser.py +5 -7
  12. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/tools.py +4 -2
  13. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/PKG-INFO +3 -3
  14. {explorepy-4.3.0 → explorepy-4.3.1}/.cookiecutterrc +0 -0
  15. {explorepy-4.3.0 → explorepy-4.3.1}/.coveragerc +0 -0
  16. {explorepy-4.3.0 → explorepy-4.3.1}/.editorconfig +0 -0
  17. {explorepy-4.3.0 → explorepy-4.3.1}/AUTHORS.rst +0 -0
  18. {explorepy-4.3.0 → explorepy-4.3.1}/CONTRIBUTING.rst +0 -0
  19. {explorepy-4.3.0 → explorepy-4.3.1}/LICENSE +0 -0
  20. {explorepy-4.3.0 → explorepy-4.3.1}/MANIFEST.in +0 -0
  21. {explorepy-4.3.0 → explorepy-4.3.1}/docs/authors.rst +0 -0
  22. {explorepy-4.3.0 → explorepy-4.3.1}/docs/changelog.rst +0 -0
  23. {explorepy-4.3.0 → explorepy-4.3.1}/docs/contributing.rst +0 -0
  24. {explorepy-4.3.0 → explorepy-4.3.1}/docs/explore_legacy_devices.rst +0 -0
  25. {explorepy-4.3.0 → explorepy-4.3.1}/docs/index.rst +0 -0
  26. {explorepy-4.3.0 → explorepy-4.3.1}/docs/installation.rst +0 -0
  27. {explorepy-4.3.0 → explorepy-4.3.1}/docs/logo.jpg +0 -0
  28. {explorepy-4.3.0 → explorepy-4.3.1}/docs/readme.rst +0 -0
  29. {explorepy-4.3.0 → explorepy-4.3.1}/docs/reference/explorepy.rst +0 -0
  30. {explorepy-4.3.0 → explorepy-4.3.1}/docs/reference/index.rst +0 -0
  31. {explorepy-4.3.0 → explorepy-4.3.1}/docs/requirements.txt +0 -0
  32. {explorepy-4.3.0 → explorepy-4.3.1}/docs/spelling_wordlist.txt +0 -0
  33. {explorepy-4.3.0 → explorepy-4.3.1}/setup.cfg +0 -0
  34. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/BLEClient.py +0 -0
  35. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/BTClient.py +0 -0
  36. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/_exceptions.py +0 -0
  37. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/bt_mock_client.py +0 -0
  38. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/bt_mock_server.py +0 -0
  39. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/command.py +0 -0
  40. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/debug.py +0 -0
  41. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/filters.py +0 -0
  42. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/log_config.py +0 -0
  43. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/packet.py +0 -0
  44. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/serial_client.py +0 -0
  45. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/settings_manager.py +0 -0
  46. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/stream_processor.py +0 -0
  47. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/SOURCES.txt +0 -0
  48. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/dependency_links.txt +0 -0
  49. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/entry_points.txt +0 -0
  50. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/requires.txt +0 -0
  51. {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/top_level.txt +0 -0
  52. {explorepy-4.3.0 → explorepy-4.3.1}/tests/README.md +0 -0
  53. {explorepy-4.3.0 → explorepy-4.3.1}/tests/__init__.py +0 -0
  54. {explorepy-4.3.0 → explorepy-4.3.1}/tests/conftest.py +0 -0
  55. {explorepy-4.3.0 → explorepy-4.3.1}/tests/integration_test_ble.py +0 -0
  56. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/calibration_info +0 -0
  57. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/calibration_info_usbc +0 -0
  58. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/cmd_rcv +0 -0
  59. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/cmd_stat +0 -0
  60. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info +0 -0
  61. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info_ble +0 -0
  62. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info_v2 +0 -0
  63. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info_v2_2 +0 -0
  64. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/disconnect +0 -0
  65. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg16_ble +0 -0
  66. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg32 +0 -0
  67. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg94 +0 -0
  68. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98 +0 -0
  69. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98_ble +0 -0
  70. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98_usbc +0 -0
  71. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98_usbc_2 +0 -0
  72. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/env +0 -0
  73. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/orn +0 -0
  74. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/orn_2 +0 -0
  75. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/orn_matrix.txt +0 -0
  76. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/push_marker +0 -0
  77. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/trigger_in +0 -0
  78. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/axis_and_angle.txt +0 -0
  79. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/calibration_info_out.txt +0 -0
  80. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/calibration_info_usbc_out.txt +0 -0
  81. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/cmd_rcv_out.txt +0 -0
  82. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/cmd_stat_out.txt +0 -0
  83. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_ble_out.txt +0 -0
  84. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_out.txt +0 -0
  85. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_v2_2_out.txt +0 -0
  86. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_v2_out.txt +0 -0
  87. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/disconnect_out.txt +0 -0
  88. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg16_ble_out.txt +0 -0
  89. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg32_out.txt +0 -0
  90. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg94_out.txt +0 -0
  91. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_ble_out.txt +0 -0
  92. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_out.txt +0 -0
  93. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_out_fake.txt +0 -0
  94. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_usbc_out.txt +0 -0
  95. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_usbc_out_2.txt +0 -0
  96. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/env_out.txt +0 -0
  97. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/orn_2_out.txt +0 -0
  98. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/orn_out.txt +0 -0
  99. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/push_marker_out.txt +0 -0
  100. {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/trigger_in_out.txt +0 -0
  101. {explorepy-4.3.0 → explorepy-4.3.1}/tests/test_packet.py +0 -0
  102. {explorepy-4.3.0 → explorepy-4.3.1}/tox.ini +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 4.3.0
2
+ current_version = 4.3.1
3
3
  commit = False
4
4
  tag = False
5
5
 
@@ -2,6 +2,12 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ 4.3.1 (17.9.2025)
6
+ ------------------
7
+ * Bugfix for 32 channel impedance recording
8
+ * Bugfix for BLE connection drop
9
+ * Update binary converter
10
+
5
11
  4.3.0 (10.9.2025)
6
12
  ------------------
7
13
  * Live impedance acquisition and recording
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: explorepy
3
- Version: 4.3.0
3
+ Version: 4.3.1
4
4
  Author-email: MentaLab Hub <support@mentab.org>
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/Mentalab-hub/explorepy
@@ -62,9 +62,9 @@ Dynamic: license-file
62
62
  :target: https://pypi.org/project/explorepy
63
63
 
64
64
 
65
- .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.3.0.svg
65
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.3.1.svg
66
66
  :alt: Commits since latest release
67
- :target: https://github.com/Mentalab-hub/explorepy/compare/v4.3.0...master
67
+ :target: https://github.com/Mentalab-hub/explorepy/compare/v4.3.1...master
68
68
 
69
69
 
70
70
  .. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
@@ -17,9 +17,9 @@
17
17
  :target: https://pypi.org/project/explorepy
18
18
 
19
19
 
20
- .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.3.0.svg
20
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.3.1.svg
21
21
  :alt: Commits since latest release
22
- :target: https://github.com/Mentalab-hub/explorepy/compare/v4.3.0...master
22
+ :target: https://github.com/Mentalab-hub/explorepy/compare/v4.3.1...master
23
23
 
24
24
 
25
25
  .. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
@@ -28,7 +28,7 @@ project = 'explorepy'
28
28
  year = '2018-2025'
29
29
  author = 'Mentalab GmbH.'
30
30
  copyright = '{0}, {1}'.format(year, author)
31
- version = release = '4.3.0'
31
+ version = release = '4.3.1'
32
32
  pygments_style = 'trac'
33
33
  templates_path = ['.']
34
34
  extlinks = {
@@ -55,7 +55,7 @@ Connects to a device and records ExG and orientation data into two separate file
55
55
  -d, --duration <integer> Recording duration in seconds
56
56
  --edf Write in EDF file
57
57
  --csv Write in csv file (default type)
58
- --imp-mode Enable impedance mode with live monitoring
58
+ --imp-mode Enable impedance mode with real-time monitoring (CSV only)
59
59
  -h, --help Show this message and exit.
60
60
 
61
61
 
@@ -222,14 +222,13 @@ Recording
222
222
  You can record data in realtime to EDF (BDF+) or CSV files using:
223
223
  ::
224
224
  explore.record_data(file_name='test', duration=120, file_type='csv')
225
+ This will record data in three separate files: "``test_ExG.csv``", "``test_ORN.csv``" and "``test_marker.csv``", which contain ExG data, orientation data (accelerometer, gyroscope, magnetometer) and event markers respectively. It is also possible to add arguments to overwrite files.
225
226
 
226
- To also record impedance data, use:
227
+ Enable imp_mode argument to record impedance data as well:
227
228
  ::
228
229
  explore.record_data(file_name='test', duration=120, file_type='csv', imp_mode=True)
229
230
 
230
- This will record data in three separate files: "``test_ExG.csv``", "``test_ORN.csv``" and "``test_marker.csv``", which contain ExG data, orientation data (accelerometer, gyroscope, magnetometer) and event markers respectively. Add command arguments to overwrite files and set the duration of the recording (in seconds).
231
- ::
232
- explore.record_data(file_name='test', do_overwrite=True, file_type='csv', duration=120)
231
+ .. note:: Impedance recording is only supported for CSV files!
233
232
 
234
233
  .. note:: To load EDF files, you can use `pyedflib <https://github.com/holgern/pyedflib>`_ or `mne <https://github.com/mne-tools/mne-python>`_ (for mne, you may need to change the file extension to ``bdf`` manually) in Python.
235
234
 
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'explorepy'
7
- version = "4.3.0"
7
+ version = "4.3.1"
8
8
  license = { text = "MIT" }
9
9
  readme = { file = "README.rst", content-type = "text/markdown" }
10
10
  authors = [
@@ -20,7 +20,7 @@ from .explore import Explore # noqa
20
20
 
21
21
 
22
22
  __all__ = ["Explore", "command", "tools", "log_config"]
23
- __version__ = '4.3.0'
23
+ __version__ = '4.3.1'
24
24
 
25
25
  this = sys.modules[__name__]
26
26
  # TODO appropriate library
@@ -76,7 +76,7 @@ def acquire(name, address, duration):
76
76
  @click.option("--edf", 'file_type', flag_value='edf', help="Write in EDF file")
77
77
  @click.option("--csv", 'file_type', flag_value='csv', help="Write in csv file (default type)", default=True)
78
78
  @click.option("--imp-mode", is_flag=True, help="Enable impedance mode with live monitoring")
79
- @click.option("-nf", "--notch-freq", help="Notch frequency for impedance mode initialization", type=float, default=50.0)
79
+ @click.option("-nf", "--notch-freq", help="Notch frequency for impedance mode initialization", type=float, default=None)
80
80
  @verify_inputs
81
81
  def record_data(address, name, filename, overwrite, duration, file_type, imp_mode, notch_freq):
82
82
  """Record data from Explore to a file"""
@@ -37,6 +37,7 @@ from explorepy.stream_processor import (
37
37
  StreamProcessor
38
38
  )
39
39
  from explorepy.tools import (
40
+ EXG_CHANNELS,
40
41
  LslServer,
41
42
  check_bin_compatibility,
42
43
  create_exg_recorder,
@@ -159,7 +160,7 @@ class Explore:
159
160
 
160
161
  def record_data(
161
162
  self, file_name, do_overwrite=False, duration=None, file_type='csv', block=False, exg_ch_names=None,
162
- imp_mode=False, notch_freq=50.0
163
+ imp_mode=False, notch_freq=None
163
164
  ):
164
165
  r"""Records the data in real-time
165
166
 
@@ -170,7 +171,7 @@ class Explore:
170
171
  file_type (str): File type of the recorded file. Supported file types: 'csv', 'edf'
171
172
  block (bool): Record in blocking mode if 'block' is True
172
173
  exg_ch_names (list): list of channel names. If None, default names are used.
173
- imp_mode (bool): Enable impedance mode with live monitoring
174
+ imp_mode (bool): Enable impedance mode with live monitoring(only for CSV files)
174
175
  notch_freq (float): Notch frequency for impedance mode initialization
175
176
  """
176
177
  self._check_connection()
@@ -181,6 +182,14 @@ class Explore:
181
182
  if file_type not in ['edf', 'csv']:
182
183
  raise ValueError(
183
184
  '{} is not a supported file extension!'.format(file_type))
185
+ if imp_mode:
186
+ if file_type == 'edf':
187
+ raise ValueError(
188
+ '{} is not a supported file extension for recording impedance!'.format(file_type))
189
+ if notch_freq is None:
190
+ raise ValueError(
191
+ 'Missing notch frequency argument, please provide the notch frequency to get live impedance values')
192
+
184
193
  duration = self._check_duration(duration)
185
194
 
186
195
  exg_out_file = file_name + "_ExG"
@@ -223,7 +232,14 @@ class Explore:
223
232
  if imp_mode:
224
233
  self.recorders['imp_csv_file'] = open(f"{impedance_out_file}.csv", 'w', newline='\n')
225
234
  self.recorders['imp_csv_writer'] = csv.writer(self.recorders['imp_csv_file'], delimiter=",")
226
- self.recorders['imp_csv_writer'].writerow(['TimeStamp'] + [f"imp_ch{i}" for i in range(1, 9)])
235
+ self.recorders['imp_csv_writer'].writerow(
236
+ ['TimeStamp'] + (
237
+ exg_ch_names
238
+ if exg_ch_names is not None
239
+ else [EXG_CHANNELS[i] for i, flag in enumerate(reversed(SettingsManager(
240
+ self.device_name).get_adc_mask())) if flag == 1]
241
+ )
242
+ )
227
243
 
228
244
  elif file_type == 'edf':
229
245
  self.recorders['marker'] = self.recorders['exg']
@@ -247,7 +263,7 @@ class Explore:
247
263
  print("Impedance:", real_values.tolist())
248
264
 
249
265
  if file_type == 'csv':
250
- row_data = [packet.timestamp, *real_values]
266
+ row_data = [float(packet.timestamp), *real_values]
251
267
  self.recorders['imp_csv_writer'].writerow(row_data)
252
268
 
253
269
  self.recorders['handle_exg_impedance_callback'] = handle_exg_impedance_packet
@@ -221,11 +221,9 @@ class Parser:
221
221
  try:
222
222
  bytes_out = binascii.hexlify(bytearray(self.stream_interface.read(1)))
223
223
  except TypeError:
224
- if is_usb_mode():
225
- self.stop_streaming()
226
- break
227
- logger.info('No data in interface, seeking again.....')
228
- continue
224
+ logger.info('TypeError when seeking end of packet, disconnecting..')
225
+ self.stop_streaming()
226
+ break
229
227
  if bytes_out == b'af' and binascii.hexlify(bytearray(self.stream_interface.read(3))) == b'beadde':
230
228
  self.seek_new_pid.clear()
231
229
  break
@@ -293,7 +291,6 @@ class Parser:
293
291
  payload_start = time.time()
294
292
  payload_start_idx = header_start + self.header_len
295
293
  payload_end = payload_start_idx + payload_length - self.data_len
296
- payload_end = payload_start_idx + payload_length - 4
297
294
  if payload_end > len(buffer):
298
295
  continue
299
296
  payload_data = buffer[payload_start_idx:payload_end]
@@ -311,7 +308,8 @@ class Parser:
311
308
  num_threads = multiprocessing.cpu_count()
312
309
  try:
313
310
  # Time: File reading
314
- buffer = bytearray(self.stream_interface.read())
311
+ first_header = self.get_header_bytes()
312
+ buffer = first_header + bytearray(self.stream_interface.read())
315
313
  # Time: Finding markers
316
314
  arr = np.frombuffer(buffer, dtype=np.uint8)
317
315
  marker_arr = np.frombuffer(PACKET_MARKER, dtype=np.uint8)
@@ -3,6 +3,7 @@
3
3
  import csv
4
4
  import datetime
5
5
  import logging
6
+ import math
6
7
  import os.path
7
8
  import socket
8
9
  from contextlib import closing
@@ -427,7 +428,7 @@ class FileRecorder:
427
428
  logger.debug('Value error on file write: {}'.format(e))
428
429
  else:
429
430
  data = self._process_batch_csv(packet)
430
- np.savetxt(self._file_obj, data.T, fmt='%4f', delimiter=',')
431
+ np.savetxt(self._file_obj, data.T, fmt='%.12g', delimiter=',')
431
432
 
432
433
 
433
434
  class LslServer:
@@ -670,6 +671,7 @@ def compare_recover_from_bin(file_name_csv, file_name_device):
670
671
  timestamp_key = 'TimeStamp'
671
672
  sampling_rate = meta_df['sr'][0]
672
673
  offset_ = meta_df["TimeOffset"][0]
674
+ offset_ = 0 if math.isnan(offset_) else offset_
673
675
  offset_ = round(offset_, 4)
674
676
  time_period = 1 / sampling_rate
675
677
 
@@ -701,7 +703,7 @@ def setup_usb_marker_port():
701
703
  def check_bin_compatibility(file_name):
702
704
  with open(file_name, "rb") as f:
703
705
  b = f.read(1).hex()
704
- if b != "62":
706
+ if b != "62" and b != "63":
705
707
  raise ExplorePyDeprecationError()
706
708
 
707
709
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: explorepy
3
- Version: 4.3.0
3
+ Version: 4.3.1
4
4
  Author-email: MentaLab Hub <support@mentab.org>
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/Mentalab-hub/explorepy
@@ -62,9 +62,9 @@ Dynamic: license-file
62
62
  :target: https://pypi.org/project/explorepy
63
63
 
64
64
 
65
- .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.3.0.svg
65
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.3.1.svg
66
66
  :alt: Commits since latest release
67
- :target: https://github.com/Mentalab-hub/explorepy/compare/v4.3.0...master
67
+ :target: https://github.com/Mentalab-hub/explorepy/compare/v4.3.1...master
68
68
 
69
69
 
70
70
  .. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes