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.
- {explorepy-4.3.0 → explorepy-4.3.1}/.bumpversion.cfg +1 -1
- {explorepy-4.3.0 → explorepy-4.3.1}/CHANGELOG.rst +6 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/PKG-INFO +3 -3
- {explorepy-4.3.0 → explorepy-4.3.1}/README.rst +2 -2
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/conf.py +1 -1
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/usage.rst +4 -5
- {explorepy-4.3.0 → explorepy-4.3.1}/pyproject.toml +1 -1
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/__init__.py +1 -1
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/cli.py +1 -1
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/explore.py +20 -4
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/parser.py +5 -7
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/tools.py +4 -2
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/PKG-INFO +3 -3
- {explorepy-4.3.0 → explorepy-4.3.1}/.cookiecutterrc +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/.coveragerc +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/.editorconfig +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/AUTHORS.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/CONTRIBUTING.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/LICENSE +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/MANIFEST.in +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/authors.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/changelog.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/contributing.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/explore_legacy_devices.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/index.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/installation.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/logo.jpg +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/readme.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/reference/explorepy.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/reference/index.rst +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/requirements.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/docs/spelling_wordlist.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/setup.cfg +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/BLEClient.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/BTClient.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/_exceptions.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/bt_mock_client.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/bt_mock_server.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/command.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/debug.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/filters.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/log_config.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/packet.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/serial_client.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/settings_manager.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy/stream_processor.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/SOURCES.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/dependency_links.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/entry_points.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/requires.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/src/explorepy.egg-info/top_level.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/README.md +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/__init__.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/conftest.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/integration_test_ble.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/calibration_info +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/calibration_info_usbc +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/cmd_rcv +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/cmd_stat +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info_ble +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info_v2 +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/device_info_v2_2 +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/disconnect +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg16_ble +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg32 +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg94 +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98 +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98_ble +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98_usbc +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/eeg98_usbc_2 +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/env +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/orn +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/orn_2 +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/orn_matrix.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/push_marker +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/in/trigger_in +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/axis_and_angle.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/calibration_info_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/calibration_info_usbc_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/cmd_rcv_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/cmd_stat_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_ble_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_v2_2_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/device_info_v2_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/disconnect_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg16_ble_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg32_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg94_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_ble_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_out_fake.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_usbc_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/eeg98_usbc_out_2.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/env_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/orn_2_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/orn_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/push_marker_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/res/out/trigger_in_out.txt +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tests/test_packet.py +0 -0
- {explorepy-4.3.0 → explorepy-4.3.1}/tox.ini +0 -0
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -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=
|
|
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=
|
|
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(
|
|
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
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
-
|
|
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='
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|