From e2552feaa0ed75419bda4ec0ea9da11031d53021 Mon Sep 17 00:00:00 2001 From: georg Date: Wed, 20 Nov 2024 19:06:31 +0000 Subject: [PATCH 01/14] added test for photometry copier --- iblrig/test/test_transfers.py | 86 ++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) diff --git a/iblrig/test/test_transfers.py b/iblrig/test/test_transfers.py index edfdae5e..2e102f31 100644 --- a/iblrig/test/test_transfers.py +++ b/iblrig/test/test_transfers.py @@ -18,6 +18,11 @@ from iblrig.test.base import TASK_KWARGS from iblrig.transfer_experiments import BehaviorCopier, EphysCopier, SessionCopier, VideoCopier from iblrig_tasks._iblrig_tasks_trainingChoiceWorld.task import Session +import iblrig.neurophotometrics + +import numpy as np +import pandas as pd +import pandera def _create_behavior_session(ntrials=None, hard_crash=False, kwargs=None): @@ -52,8 +57,8 @@ def _create_behavior_session(ntrials=None, hard_crash=False, kwargs=None): return session -class TestIntegrationTransferExperiments(unittest.TestCase): - """This test emulates the `transfer_data` command as run on the rig.""" +class TestIntegrationTransferExperimentsBase(unittest.TestCase): + """this base class copier testing""" def setUp(self): self.iblrig_settings = iblrig.path_helper.load_pydantic_yaml( @@ -82,6 +87,83 @@ def side_effect(self, *args, filename=None, **kwargs): else: return self.iblrig_settings + +class TestIntegrationTransferExperimentsPhotometry(TestIntegrationTransferExperimentsBase): + """for testing the photometry""" + + def create_fake_data(self): + datestr = datetime.now().strftime('%Y-%m-%d') + timestr = datetime.now().strftime('T%H%M%S') + folder_neurophotometrics = self.iblrig_settings['iblrig_local_data_path'].joinpath('neurophotometrics', datestr, timestr) + folder_neurophotometrics.mkdir(exist_ok=True, parents=True) + + cols_dtypes = dict( + ChannelName=str, Channel='int8', AlwaysTrue='bool', SystemTimestamp='float64', ComputerTimestamp='float64' + ) + cols = list(cols_dtypes.keys()) + digital_inputs_df = pd.DataFrame(np.random.randn(10, len(cols)), columns=cols) + for col, dtype in cols_dtypes.items(): + digital_inputs_df[col] = digital_inputs_df[col].astype(dtype) + + schema_digital_inputs = pandera.DataFrameSchema( + columns=dict( + ChannelName=pandera.Column(str, coerce=True), + Channel=pandera.Column(pandera.Int8, coerce=True), + AlwaysTrue=pandera.Column(bool, coerce=True), + SystemTimestamp=pandera.Column(pandera.Float64), + ComputerTimestamp=pandera.Column(pandera.Float64), + ) + ) + digital_inputs_df = schema_digital_inputs.validate(digital_inputs_df) + digital_inputs_df.to_csv(folder_neurophotometrics / 'digital_inputs.csv', index=False, header=False) + + # raw + schema_raw_data = pandera.DataFrameSchema( + columns=dict( + FrameCounter=pandera.Column(pandera.Int64), + SystemTimestamp=pandera.Column(pandera.Float64), + LedState=pandera.Column(pandera.Int16, coerce=True), + ComputerTimestamp=pandera.Column(pandera.Float64), + Region00=pandera.Column(pandera.Float64), # hard coding regions here + Region01=pandera.Column(pandera.Float64), + ) + ) + cols_dtypes = dict( + FrameCounter='int64', + SystemTimestamp='float64', + LedState='int16', + ComputerTimestamp='float64', + Region00='float64', + Region01='float64', + ) + + cols = list(cols_dtypes.keys()) + raw_photometry_df = pd.DataFrame(np.random.randn(10, len(cols)), columns=cols) + for col, dtype in cols_dtypes.items(): + raw_photometry_df[col] = raw_photometry_df[col].astype(dtype) + + raw_photometry_df = schema_raw_data.validate(raw_photometry_df) + raw_photometry_df.to_csv(folder_neurophotometrics / 'raw_photometry.csv', index=False) + + def test_copier(self): + session = _create_behavior_session(ntrials=50, kwargs=self.session_kwargs) + self.create_fake_data() + + # the workaround to find the settings.yaml + with mock.patch('iblrig.path_helper._load_settings_yaml') as mocker: + mocker.side_effect = self.side_effect + # the actual code to test + iblrig.neurophotometrics.init_neurophotometrics_subject( + session_stub=session.paths['SESSION_FOLDER'], + rois=['Region00', 'Region01'], + locations=['VTA', 'SNc'], + ) + iblrig.neurophotometrics.copy_photometry_subject(session.paths['SESSION_FOLDER']) + + +class TestIntegrationTransferExperiments(TestIntegrationTransferExperimentsBase): + """This test emulates the `transfer_data` command as run on the rig.""" + def test_behavior_copy_complete_session(self): """ Here there are 2 cases, one is about a complete session, the other is about a session that crashed From 07dc8694b1531828c32868bea4719472c1537e7a Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Fri, 22 Nov 2024 12:40:41 +0000 Subject: [PATCH 02/14] remove static_vars() and get_detailed_version_string() --- iblrig/__init__.py | 7 --- iblrig/gui/wizard.py | 7 ++- iblrig/hardware.py | 2 - iblrig/test/test_tools.py | 14 +---- iblrig/test/test_version_management.py | 28 +--------- iblrig/tools.py | 56 +++++-------------- iblrig/version_management.py | 75 ++++---------------------- 7 files changed, 32 insertions(+), 157 deletions(-) diff --git a/iblrig/__init__.py b/iblrig/__init__.py index 4f2a3a67..53b30ddc 100644 --- a/iblrig/__init__.py +++ b/iblrig/__init__.py @@ -7,10 +7,3 @@ # >>> git tag 8.15.6 # >>> git push origin --tags __version__ = '8.25.0' - - -from iblrig.version_management import get_detailed_version_string - -# The following method call will try to get post-release information (i.e. the number of commits since the last tagged -# release corresponding to the one above), plus information about the state of the local repository (dirty/broken) -__version__ = get_detailed_version_string(__version__) diff --git a/iblrig/gui/wizard.py b/iblrig/gui/wizard.py index 31f19e05..9e0153d4 100644 --- a/iblrig/gui/wizard.py +++ b/iblrig/gui/wizard.py @@ -1270,6 +1270,7 @@ def __init__(self, parent: QtWidgets.QWidget, version: str) -> None: def main(): + # argument parser parser = argparse.ArgumentParser() parser.add_argument('-d', '--debug', action='store_true', dest='debug', help='increase logging verbosity') parser.add_argument( @@ -1277,17 +1278,21 @@ def main(): ) args = parser.parse_args() + # set logging verbosity if args.debug: setup_logger(name=None, level='DEBUG') else: setup_logger(name='iblrig', level='INFO') + + # set app information QtCore.QCoreApplication.setOrganizationName('International Brain Laboratory') QtCore.QCoreApplication.setOrganizationDomain('internationalbrainlab.org') QtCore.QCoreApplication.setApplicationName('IBLRIG Wizard') - if os.name == 'nt': app_id = f'IBL.iblrig.wizard.{iblrig.__version__}' ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(app_id) + + # instantiate app app = QtWidgets.QApplication(['', '--no-sandbox']) app.setStyle('Fusion') w = RigWizard(debug=args.debug, remote_devices=args.remote_devices) diff --git a/iblrig/hardware.py b/iblrig/hardware.py index 82a8ba4c..babef14f 100644 --- a/iblrig/hardware.py +++ b/iblrig/hardware.py @@ -22,7 +22,6 @@ from serial.tools import list_ports from iblrig.pydantic_definitions import HardwareSettingsRotaryEncoder -from iblrig.tools import static_vars from iblutil.util import Bunch from pybpod_rotaryencoder_module.module import RotaryEncoder as PybpodRotaryEncoder from pybpod_rotaryencoder_module.module_api import RotaryEncoderModule as PybpodRotaryEncoderModule @@ -291,7 +290,6 @@ def softcode_handler(softcode: int): self.softcode_handler_function = original_softcode_handler return counter - @static_vars(supported=True) def set_status_led(self, state: bool) -> bool: if self.can_control_led and self._arcom is not None: try: diff --git a/iblrig/test/test_tools.py b/iblrig/test/test_tools.py index f42fa0a7..49b99de0 100644 --- a/iblrig/test/test_tools.py +++ b/iblrig/test/test_tools.py @@ -4,7 +4,7 @@ from unittest.mock import patch from iblrig.constants import BONSAI_EXE -from iblrig.tools import ask_user, call_bonsai, internet_available, static_vars +from iblrig.tools import ask_user, call_bonsai, internet_available class TestAskUser(unittest.TestCase): @@ -31,18 +31,6 @@ def test_ask_user_with_invalid_input(self, mock_input): self.assertFalse(result) -class TestStaticVarsDecorator(unittest.TestCase): - def test_static_vars_decorator(self): - @static_vars(var1=1, var2='test') - def test_function(): - return test_function.var1, test_function.var2 - - self.assertEqual(test_function(), (1, 'test')) - test_function.var1 = 42 - test_function.var2 = 'modified' - self.assertEqual(test_function(), (42, 'modified')) - - class TestInternetAvailableFunction(unittest.TestCase): @patch('socket.socket') def test_internet_available_with_internet(self, mock_socket): diff --git a/iblrig/test/test_version_management.py b/iblrig/test/test_version_management.py index 245a935e..f62b2a40 100644 --- a/iblrig/test/test_version_management.py +++ b/iblrig/test/test_version_management.py @@ -6,7 +6,7 @@ from packaging import version from iblrig.constants import BASE_DIR -from iblrig.version_management import check_for_updates, get_detailed_version_string, get_local_version, is_dirty +from iblrig.version_management import check_for_updates, get_local_version, is_dirty class TestCheckForUpdates(unittest.TestCase): @@ -41,32 +41,6 @@ def test_get_local_version_failure(self): self.assertIsNone(result) -class TestGetDetailedVersionString(unittest.TestCase): - @patch('iblrig.version_management.internet_available', return_value=True) - @patch('iblrig.version_management.get_remote_tags') - @patch('iblrig.version_management.check_output', return_value='1.0.0-42-gfe39a9d2-dirty\n') - def test_detailed_version_string_generation(self, mock_check_output, mock_get_remote_tags, mock_internet_available): - with self.assertNoLogs('iblrig', level='ERROR'): - result = get_detailed_version_string('1.0.0') - self.assertEqual(result, '1.0.0.post42+dirty') - mock_internet_available.assert_called_once() - mock_get_remote_tags.assert_called_once() - mock_check_output.assert_called_once() - - @patch('iblrig.version_management.internet_available', return_value=False) - def test_detailed_version_string_no_internet(self, mock_internet_available): - with self.assertNoLogs('iblrig', level='ERROR'): - result = get_detailed_version_string('1.0.0') - self.assertEqual(result, '1.0.0') - mock_internet_available.assert_called_once() - - @patch('iblrig.version_management.IS_GIT', False) - def test_detailed_version_string_no_git(self): - with self.assertLogs('iblrig', level='ERROR'): - result = get_detailed_version_string('1.0.0') - self.assertEqual(result, '1.0.0') - - class TestIsDirty(unittest.TestCase): @patch('iblrig.version_management.check_call') def test_dirty_directory(self, mock_check_call): diff --git a/iblrig/tools.py b/iblrig/tools.py index b00a009c..157bf380 100644 --- a/iblrig/tools.py +++ b/iblrig/tools.py @@ -13,10 +13,11 @@ from pathlib import Path from typing import Any, TypeVar -from iblrig import version_management +from iblrig import __version__ as iblrig_version from iblrig.constants import BONSAI_EXE, IS_GIT from iblrig.path_helper import create_bonsai_layout_from_template, load_pydantic_yaml from iblrig.pydantic_definitions import HardwareSettings, RigSettings +from iblrig.version_management import get_branch, get_commit_hash, is_dirty from iblutil.util import get_mac log = logging.getLogger(__name__) @@ -111,35 +112,6 @@ def get_anydesk_id(format_id: bool = True, silent: bool = False) -> str | None: return anydesk_id -def static_vars(**kwargs) -> Callable[..., Any]: - """ - Decorator to add static variables to a function. - - This decorator allows you to add static variables to a function by providing - keyword arguments. Static variables are shared across all calls to the - decorated function. - - Parameters - ---------- - **kwargs - Keyword arguments where the keys are variable names and the values are - the initial values of the static variables. - - Returns - ------- - function - A decorated function with the specified static variables. - """ - - def decorate(func: Callable[..., Any]) -> Callable[..., Any]: - for k in kwargs: - setattr(func, k, kwargs[k]) - return func - - return decorate - - -@static_vars(return_value=None) def internet_available(host: str = '8.8.8.8', port: int = 53, timeout: int = 3, force_update: bool = False) -> bool: """ Check if the internet connection is available. @@ -167,7 +139,7 @@ def internet_available(host: str = '8.8.8.8', port: int = 53, timeout: int = 3, bool True if an internet connection is available, False otherwise. """ - if not force_update and internet_available.return_value: + if not force_update and hasattr(internet_available, 'return_value'): return internet_available.return_value try: socket.setdefaulttimeout(timeout) @@ -201,9 +173,7 @@ def _build_bonsai_cmd( debug: bool = False, bootstrap: bool = True, editor: bool = True, - wait: bool = True, - check: bool = False, - bonsai_executable: str | Path = None, + bonsai_executable: Path = BONSAI_EXE, ) -> subprocess.Popen[bytes] | subprocess.Popen[str | bytes | Any] | subprocess.CompletedProcess: """ Execute a Bonsai workflow within a subprocess call. @@ -223,6 +193,8 @@ def _build_bonsai_cmd( Enable Bonsai bootstrapping if True (default is True). editor : bool, optional Enable Bonsai editor if True (default is True). + bonsai_executable : Path + Path to bonsai executable. Defaults to iblrig.constants.BONSAI_EXE. Returns ------- @@ -235,7 +207,6 @@ def _build_bonsai_cmd( If the Bonsai executable does not exist. If the specified workflow file does not exist. """ - bonsai_executable = BONSAI_EXE if bonsai_executable is None else bonsai_executable if not bonsai_executable.exists(): raise FileNotFoundError(bonsai_executable) workflow_file = Path(workflow_file) @@ -265,7 +236,7 @@ def call_bonsai( editor: bool = True, wait: bool = True, check: bool = False, - bonsai_executable: str | Path = None, + bonsai_executable: Path = BONSAI_EXE, ) -> subprocess.Popen[bytes] | subprocess.Popen[str | bytes | Any] | subprocess.CompletedProcess: """ Execute a Bonsai workflow within a subprocess call. @@ -290,6 +261,8 @@ def call_bonsai( check : bool, optional Raise CalledProcessError if Bonsai process exits with non-zero exit code (default is False). Only applies if wait is True. + bonsai_executable : Path + Path to bonsai executable. Defaults to iblrig.constants.BONSAI_EXE. Returns ------- @@ -303,7 +276,7 @@ def call_bonsai( If the specified workflow file does not exist. """ - cmd = _build_bonsai_cmd(workflow_file, parameters, start, debug, bootstrap, editor, bonsai_executable=bonsai_executable) + cmd = _build_bonsai_cmd(workflow_file, parameters, start, debug, bootstrap, editor, bonsai_executable) cwd = Path(workflow_file).parent log.info(f'Starting Bonsai workflow `{workflow_file.name}`') log.debug(' '.join(map(str, cmd))) @@ -396,7 +369,7 @@ class ANSI: def get_lab_location_dict(hardware_settings: HardwareSettings, iblrig_settings: RigSettings) -> dict[str, Any]: lab_location = dict() lab_location['rig_name'] = hardware_settings.RIG_NAME - lab_location['iblrig_version'] = str(version_management.get_local_version()) + lab_location['iblrig_version'] = iblrig_version lab_location['last_seen'] = date.today().isoformat() machine = dict() @@ -410,14 +383,13 @@ def get_lab_location_dict(hardware_settings: HardwareSettings, iblrig_settings: git = dict() git['is_git'] = IS_GIT - git['branch'] = version_management.get_branch() - git['commit_id'] = version_management.get_commit_hash() - git['is_dirty'] = version_management.is_dirty() + git['branch'] = get_branch() + git['commit_id'] = get_commit_hash() + git['is_dirty'] = is_dirty() lab_location['git'] = git # TODO: add hardware/firmware versions of bpod, soundcard, rotary encoder, frame2ttl, ambient module, etc # TODO: add validation errors/warnings - return lab_location diff --git a/iblrig/version_management.py b/iblrig/version_management.py index 1003f95c..59f2b26a 100644 --- a/iblrig/version_management.py +++ b/iblrig/version_management.py @@ -3,7 +3,7 @@ from collections.abc import Callable from functools import cache from pathlib import Path -from subprocess import STDOUT, CalledProcessError, SubprocessError, check_call, check_output +from subprocess import CalledProcessError, SubprocessError, check_call, check_output from typing import Any, Literal import requests @@ -11,7 +11,6 @@ from iblrig import __version__ from iblrig.constants import BASE_DIR, IS_GIT, IS_VENV -from iblrig.tools import cached_check_output, internet_available log = logging.getLogger(__name__) @@ -68,69 +67,7 @@ def get_local_version() -> version.Version | None: return None -def get_detailed_version_string(v_basic: str) -> str: - """ - Generate a detailed version string based on a basic version string. - - This function takes a basic version string (major.minor.patch) and generates - a detailed version string by querying Git for additional version information. - The detailed version includes commit number of commits since the last tag, - and Git status (dirty or broken). It is designed to fail safely. - - Parameters - ---------- - v_basic : str - A basic version string in the format 'major.minor.patch'. - - Returns - ------- - str - A detailed version string containing version information retrieved - from Git, or the original basic version string if Git information - cannot be obtained. - - Notes - ----- - This method will only work with installations managed through Git. - """ - if not internet_available(): - return v_basic - - if not IS_GIT: - log.error('This installation of IBLRIG is not managed through git.') - return v_basic - - # sanitize & check if input only consists of three fields - major, minor and patch - separated by dots - v_sanitized = re.sub(r'^(\d+\.\d+\.\d+).*$$', r'\1', v_basic) - if not re.match(r'^\d+\.\d+\.\d+$', v_sanitized): - log.error(f"Couldn't parse version string: {v_basic}") - return v_basic - - # get details through `git describe` - try: - get_remote_tags() - v_detailed = check_output( - ['git', 'describe', '--dirty', '--broken', '--match', v_sanitized, '--tags', '--long'], - cwd=BASE_DIR, - text=True, - timeout=1, - stderr=STDOUT, - ) - except (SubprocessError, CalledProcessError) as e: - log.debug(e, exc_info=True) - return v_basic - - # apply a bit of regex magic for formatting & return the detailed version string - v_detailed = re.sub(r'^((?:[\d+\.])+)(-[1-9]\d*)?(?:-0\d*)?(?:-\w+)(-dirty|-broken)?\n?$', r'\1\2\3', v_detailed) - v_detailed = re.sub(r'-(\d+)', r'.post\1', v_detailed) - v_detailed = re.sub(r'\-(dirty|broken)', r'+\1', v_detailed) - return v_detailed - - -OnErrorLiteral = Literal['raise', 'log', 'silence'] - - -def call_git(*args: str, cache_output: bool = True, on_error: OnErrorLiteral = 'raise') -> str | None: +def call_git(*args: str, cache_output: bool = True, on_error: Literal['raise', 'log', 'silence'] = 'raise') -> str | None: """ Call a git command with the specified arguments. @@ -170,6 +107,8 @@ def call_git(*args: str, cache_output: bool = True, on_error: OnErrorLiteral = ' log.error(message) return None try: + from iblrig.tools import cached_check_output + output = cached_check_output(**kwargs) if cache_output else check_output(**kwargs) return str(output).strip() except SubprocessError as e: @@ -226,6 +165,8 @@ def get_remote_tags() -> None: ----- This method will only work with installations managed through Git. """ + from iblrig.tools import internet_available + if not internet_available(): return if (branch := get_branch()) is None: @@ -282,6 +223,8 @@ def get_remote_version() -> version.Version | None: ----- This method will only work with installations managed through Git. """ + from iblrig.tools import internet_available + if not internet_available(): log.error('Cannot obtain remote version: Not connected to internet') return None @@ -345,6 +288,8 @@ def check_upgrade_prerequisites(exception_handler: Callable | None = None, *args if the script is not running within the IBLRIG virtual environment. """ try: + from iblrig.tools import internet_available + if not internet_available(): raise ConnectionError('No connection to internet.') if not IS_GIT: From ff36cdf2866a0048c4b09f1908c77679f62b6b8a Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Fri, 22 Nov 2024 13:27:56 +0000 Subject: [PATCH 03/14] update ruff --- iblrig/base_tasks.py | 7 +- iblrig/misc.py | 10 +- .../test/tasks/test_training_choice_world.py | 4 +- pdm.lock | 111 +++++++++--------- 4 files changed, 65 insertions(+), 67 deletions(-) diff --git a/iblrig/base_tasks.py b/iblrig/base_tasks.py index 263844f0..c5f6b096 100644 --- a/iblrig/base_tasks.py +++ b/iblrig/base_tasks.py @@ -727,11 +727,10 @@ def send2bonsai(self, **kwargs): :example: client.send2bonsai(trial_num=6, sim_freq=50) :return: """ - for k in kwargs: + for k, v in kwargs.items(): if k in self.OSC_PROTOCOL: - # need to convert basic numpy types to low-level python types for - # punch card generation OSC module, I might as well have written C code - value = kwargs[k].item() if isinstance(kwargs[k], np.generic) else kwargs[k] + # need to convert basic numpy types to low-level python types for OSC module + value = v.item() if isinstance(v, np.generic) else v self.send_message(self.OSC_PROTOCOL[k]['mess'], self.OSC_PROTOCOL[k]['type'](value)) def exit(self): diff --git a/iblrig/misc.py b/iblrig/misc.py index 9a362b4e..e072fe88 100644 --- a/iblrig/misc.py +++ b/iblrig/misc.py @@ -135,12 +135,10 @@ def get_session_path(path: str | Path) -> Path | None: def get_port_events(events: dict, name: str = '') -> list: out: list = [] - for k in events: - if name in k: - out.extend(events[k]) - out = sorted(out) - - return out + for key, value in events.items(): + if name in key: + out.extend(value) + return sorted(out) def truncated_exponential(scale: float = 0.35, min_value: float = 0.2, max_value: float = 0.5) -> float: diff --git a/iblrig/test/tasks/test_training_choice_world.py b/iblrig/test/tasks/test_training_choice_world.py index 793970c9..d77059b0 100644 --- a/iblrig/test/tasks/test_training_choice_world.py +++ b/iblrig/test/tasks/test_training_choice_world.py @@ -125,5 +125,5 @@ def test_acquisition_description(self): } ], } - for k in ed: - assert ad[k] == ed[k], f'Failed on {k}' + for key, ed_value in ed.items(): + assert ad[key] == ed_value, f'Failed on {key}' diff --git a/pdm.lock b/pdm.lock index e6ff918e..a94baf43 100644 --- a/pdm.lock +++ b/pdm.lock @@ -759,8 +759,8 @@ files = [ [[package]] name = "iblatlas" -version = "0.5.4" -requires_python = ">=3.8" +version = "0.5.5" +requires_python = ">=3.10" summary = "IBL atlas module" groups = ["default"] dependencies = [ @@ -772,8 +772,8 @@ dependencies = [ "scipy", ] files = [ - {file = "iblatlas-0.5.4-py3-none-any.whl", hash = "sha256:b83657d4b90124b0414d36b4bfa1ff856496f25dd5b9bef3980af311f59aacda"}, - {file = "iblatlas-0.5.4.tar.gz", hash = "sha256:3bb6d50efa376e394b6d418498cf7c976440eb4706ff3949d1a48017ae786eeb"}, + {file = "iblatlas-0.5.5-py3-none-any.whl", hash = "sha256:1aae446efff68af74ab014550e38587e65385ed910d9ddc1d15c1e9e2ed88b9d"}, + {file = "iblatlas-0.5.5.tar.gz", hash = "sha256:3bcfbe13a98000bca844d681340c71a39539a164263e15ff8e8ff8e9c348e321"}, ] [[package]] @@ -1638,12 +1638,12 @@ files = [ [[package]] name = "pandera" -version = "0.20.4" +version = "0.21.0" requires_python = ">=3.7" summary = "A light-weight and flexible data validation and testing tool for statistical data objects." groups = ["default"] dependencies = [ - "multimethod<=1.10.0", + "multimethod", "numpy>=1.19.0", "packaging>=20.0", "pandas>=1.2.0", @@ -1654,8 +1654,8 @@ dependencies = [ "wrapt", ] files = [ - {file = "pandera-0.20.4-py3-none-any.whl", hash = "sha256:40368d9162938f304ce4ce6ad41ce4b57991b88f7de1bb4574aeb5a1ecf2dc8c"}, - {file = "pandera-0.20.4.tar.gz", hash = "sha256:ccf6178293ef9d4393dc4776e47477e3d2dd51c800ecdfedec67fff50f4ad3c2"}, + {file = "pandera-0.21.0-py3-none-any.whl", hash = "sha256:ee694182ff9f15c165d14a99a9b90bcdf95bce07c1935f73c69718db15c85809"}, + {file = "pandera-0.21.0.tar.gz", hash = "sha256:12a1e67478dc72459eff8329036e1d3502fcc4332c9c70bdbd88a78b7597aa8a"}, ] [[package]] @@ -1899,24 +1899,23 @@ files = [ [[package]] name = "pydantic" -version = "2.9.2" +version = "2.10.1" requires_python = ">=3.8" summary = "Data validation using Python type hints" groups = ["default"] dependencies = [ "annotated-types>=0.6.0", - "pydantic-core==2.23.4", - "typing-extensions>=4.12.2; python_version >= \"3.13\"", - "typing-extensions>=4.6.1; python_version < \"3.13\"", + "pydantic-core==2.27.1", + "typing-extensions>=4.12.2", ] files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + {file = "pydantic-2.10.1-py3-none-any.whl", hash = "sha256:a8d20db84de64cf4a7d59e899c2caf0fe9d660c7cfc482528e7020d7dd189a7e"}, + {file = "pydantic-2.10.1.tar.gz", hash = "sha256:a4daca2dc0aa429555e0656d6bf94873a7dc5f54ee42b1f5873d666fb3f35560"}, ] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.27.1" requires_python = ">=3.8" summary = "Core functionality for Pydantic validation and serialization" groups = ["default"] @@ -1924,27 +1923,29 @@ dependencies = [ "typing-extensions!=4.7.0,>=4.6.0", ] files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, + {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, + {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, + {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, ] [[package]] @@ -2394,29 +2395,29 @@ files = [ [[package]] name = "ruff" -version = "0.7.3" +version = "0.8.0" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." groups = ["dev", "test"] files = [ - {file = "ruff-0.7.3-py3-none-linux_armv6l.whl", hash = "sha256:34f2339dc22687ec7e7002792d1f50712bf84a13d5152e75712ac08be565d344"}, - {file = "ruff-0.7.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:fb397332a1879b9764a3455a0bb1087bda876c2db8aca3a3cbb67b3dbce8cda0"}, - {file = "ruff-0.7.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:37d0b619546103274e7f62643d14e1adcbccb242efda4e4bdb9544d7764782e9"}, - {file = "ruff-0.7.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d59f0c3ee4d1a6787614e7135b72e21024875266101142a09a61439cb6e38a5"}, - {file = "ruff-0.7.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:44eb93c2499a169d49fafd07bc62ac89b1bc800b197e50ff4633aed212569299"}, - {file = "ruff-0.7.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d0242ce53f3a576c35ee32d907475a8d569944c0407f91d207c8af5be5dae4e"}, - {file = "ruff-0.7.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6b6224af8b5e09772c2ecb8dc9f3f344c1aa48201c7f07e7315367f6dd90ac29"}, - {file = "ruff-0.7.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c50f95a82b94421c964fae4c27c0242890a20fe67d203d127e84fbb8013855f5"}, - {file = "ruff-0.7.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f3eff9961b5d2644bcf1616c606e93baa2d6b349e8aa8b035f654df252c8c67"}, - {file = "ruff-0.7.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8963cab06d130c4df2fd52c84e9f10d297826d2e8169ae0c798b6221be1d1d2"}, - {file = "ruff-0.7.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:61b46049d6edc0e4317fb14b33bd693245281a3007288b68a3f5b74a22a0746d"}, - {file = "ruff-0.7.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:10ebce7696afe4644e8c1a23b3cf8c0f2193a310c18387c06e583ae9ef284de2"}, - {file = "ruff-0.7.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3f36d56326b3aef8eeee150b700e519880d1aab92f471eefdef656fd57492aa2"}, - {file = "ruff-0.7.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5d024301109a0007b78d57ab0ba190087b43dce852e552734ebf0b0b85e4fb16"}, - {file = "ruff-0.7.3-py3-none-win32.whl", hash = "sha256:4ba81a5f0c5478aa61674c5a2194de8b02652f17addf8dfc40c8937e6e7d79fc"}, - {file = "ruff-0.7.3-py3-none-win_amd64.whl", hash = "sha256:588a9ff2fecf01025ed065fe28809cd5a53b43505f48b69a1ac7707b1b7e4088"}, - {file = "ruff-0.7.3-py3-none-win_arm64.whl", hash = "sha256:1713e2c5545863cdbfe2cbce21f69ffaf37b813bfd1fb3b90dc9a6f1963f5a8c"}, - {file = "ruff-0.7.3.tar.gz", hash = "sha256:e1d1ba2e40b6e71a61b063354d04be669ab0d39c352461f3d789cac68b54a313"}, + {file = "ruff-0.8.0-py3-none-linux_armv6l.whl", hash = "sha256:fcb1bf2cc6706adae9d79c8d86478677e3bbd4ced796ccad106fd4776d395fea"}, + {file = "ruff-0.8.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:295bb4c02d58ff2ef4378a1870c20af30723013f441c9d1637a008baaf928c8b"}, + {file = "ruff-0.8.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b1f1c76b47c18fa92ee78b60d2d20d7e866c55ee603e7d19c1e991fad933a9a"}, + {file = "ruff-0.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb0d4f250a7711b67ad513fde67e8870109e5ce590a801c3722580fe98c33a99"}, + {file = "ruff-0.8.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e55cce9aa93c5d0d4e3937e47b169035c7e91c8655b0974e61bb79cf398d49c"}, + {file = "ruff-0.8.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f4cd64916d8e732ce6b87f3f5296a8942d285bbbc161acee7fe561134af64f9"}, + {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c5c1466be2a2ebdf7c5450dd5d980cc87c8ba6976fb82582fea18823da6fa362"}, + {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2dabfd05b96b7b8f2da00d53c514eea842bff83e41e1cceb08ae1966254a51df"}, + {file = "ruff-0.8.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:facebdfe5a5af6b1588a1d26d170635ead6892d0e314477e80256ef4a8470cf3"}, + {file = "ruff-0.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87a8e86bae0dbd749c815211ca11e3a7bd559b9710746c559ed63106d382bd9c"}, + {file = "ruff-0.8.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85e654f0ded7befe2d61eeaf3d3b1e4ef3894469cd664ffa85006c7720f1e4a2"}, + {file = "ruff-0.8.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:83a55679c4cb449fa527b8497cadf54f076603cc36779b2170b24f704171ce70"}, + {file = "ruff-0.8.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:812e2052121634cf13cd6fddf0c1871d0ead1aad40a1a258753c04c18bb71bbd"}, + {file = "ruff-0.8.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:780d5d8523c04202184405e60c98d7595bdb498c3c6abba3b6d4cdf2ca2af426"}, + {file = "ruff-0.8.0-py3-none-win32.whl", hash = "sha256:5fdb6efecc3eb60bba5819679466471fd7d13c53487df7248d6e27146e985468"}, + {file = "ruff-0.8.0-py3-none-win_amd64.whl", hash = "sha256:582891c57b96228d146725975fbb942e1f30a0c4ba19722e692ca3eb25cc9b4f"}, + {file = "ruff-0.8.0-py3-none-win_arm64.whl", hash = "sha256:ba93e6294e9a737cd726b74b09a6972e36bb511f9a102f1d9a7e1ce94dd206a6"}, + {file = "ruff-0.8.0.tar.gz", hash = "sha256:a7ccfe6331bf8c8dad715753e157457faf7351c2b69f62f32c165c2dbcbacd44"}, ] [[package]] From 0da0752ec5327a99b4924580d0a64383aa6b34d7 Mon Sep 17 00:00:00 2001 From: owinter Date: Mon, 25 Nov 2024 18:39:05 +0000 Subject: [PATCH 04/14] add photometry documentation --- docs/source/usage.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 344039fe..3664009e 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -6,3 +6,5 @@ Using IBLRIG v8 .. include:: usage_copy.rst .. include:: usage_video.rst .. include:: usage_neuropixel.rst +.. include:: uswage_neurophotometrics.rst + From a1c21c987bbf0d61e622ab65b06591bb57868b58 Mon Sep 17 00:00:00 2001 From: owinter Date: Mon, 25 Nov 2024 18:55:17 +0000 Subject: [PATCH 05/14] oh non, le typo --- docs/source/usage.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 3664009e..86399313 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -6,5 +6,5 @@ Using IBLRIG v8 .. include:: usage_copy.rst .. include:: usage_video.rst .. include:: usage_neuropixel.rst -.. include:: uswage_neurophotometrics.rst +.. include:: usage_neurophotometrics.rst From 25d5ce20edc0ba7ade4a098b645e054d7ca387a7 Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Mon, 2 Dec 2024 09:48:16 +0000 Subject: [PATCH 06/14] rename menu item for getting v7 training status --- CHANGELOG.md | 4 ++++ iblrig/__init__.py | 2 +- iblrig/gui/ui_wizard.py | 2 +- iblrig/gui/ui_wizard.ui | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a61f213b..953e234d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ Changelog ========= +8.25.1 +------ +* changed: renamed menu item for getting V7 training status + 8.25.0 ------ * feature: fiber photometry loader diff --git a/iblrig/__init__.py b/iblrig/__init__.py index 53b30ddc..32fc16ff 100644 --- a/iblrig/__init__.py +++ b/iblrig/__init__.py @@ -6,4 +6,4 @@ # 5) git tag the release in accordance to the version number below (after merge!) # >>> git tag 8.15.6 # >>> git push origin --tags -__version__ = '8.25.0' +__version__ = '8.25.1' diff --git a/iblrig/gui/ui_wizard.py b/iblrig/gui/ui_wizard.py index 06dd1566..1435bc45 100644 --- a/iblrig/gui/ui_wizard.py +++ b/iblrig/gui/ui_wizard.py @@ -392,7 +392,7 @@ def retranslateUi(self, wizard): self.uiPushPause.setText(_translate("wizard", "Pause")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabSession), _translate("wizard", "Session")) self.uiMenuTools.setTitle(_translate("wizard", "Tools")) - self.uiActionTrainingLevelV7.setText(_translate("wizard", "Get Training Level")) + self.uiActionTrainingLevelV7.setText(_translate("wizard", "Get Training Level (IBLRIG V7)")) self.uiActionCalibrateFrame2ttl.setText(_translate("wizard", "Calibrate Frame2TTL")) self.uiActionCalibrateValve.setText(_translate("wizard", "Calibrate Valve")) self.uiActionValidateHardware.setText(_translate("wizard", "Validate System")) diff --git a/iblrig/gui/ui_wizard.ui b/iblrig/gui/ui_wizard.ui index 9c302935..2feac8b2 100644 --- a/iblrig/gui/ui_wizard.ui +++ b/iblrig/gui/ui_wizard.ui @@ -776,7 +776,7 @@ - Get Training Level + Get Training Level (IBLRIG V7) From 578bff82ba7e4ca291238aef1b327d55728acb11 Mon Sep 17 00:00:00 2001 From: georg Date: Mon, 2 Dec 2024 16:38:57 +0000 Subject: [PATCH 07/14] ruff --- iblrig/test/test_transfers.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/iblrig/test/test_transfers.py b/iblrig/test/test_transfers.py index 2e102f31..2bb2a67c 100644 --- a/iblrig/test/test_transfers.py +++ b/iblrig/test/test_transfers.py @@ -6,10 +6,14 @@ from pathlib import Path from unittest import mock +import numpy as np +import pandas as pd +import pandera from packaging import version import ibllib import iblrig.commands +import iblrig.neurophotometrics import iblrig.path_helper import iblrig.raw_data_loaders from ibllib.io import session_params @@ -18,11 +22,6 @@ from iblrig.test.base import TASK_KWARGS from iblrig.transfer_experiments import BehaviorCopier, EphysCopier, SessionCopier, VideoCopier from iblrig_tasks._iblrig_tasks_trainingChoiceWorld.task import Session -import iblrig.neurophotometrics - -import numpy as np -import pandas as pd -import pandera def _create_behavior_session(ntrials=None, hard_crash=False, kwargs=None): From 1f2d6e5201c8c3fba966c108442265b012b76717 Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Thu, 5 Dec 2024 12:20:01 +0000 Subject: [PATCH 08/14] add narrative logic --- iblrig/gui/tab_log.py | 17 ++- iblrig/gui/ui_login.py | 2 +- iblrig/gui/ui_tab_log.py | 59 ++++++++- iblrig/gui/ui_tab_log.ui | 267 ++++++++++++++++++++++++++------------- iblrig/gui/wizard.py | 12 +- 5 files changed, 258 insertions(+), 99 deletions(-) diff --git a/iblrig/gui/tab_log.py b/iblrig/gui/tab_log.py index a417a03c..3ed4bbaf 100644 --- a/iblrig/gui/tab_log.py +++ b/iblrig/gui/tab_log.py @@ -1,4 +1,4 @@ -from PyQt5.QtCore import QSettings, pyqtSlot +from PyQt5.QtCore import QSettings, pyqtSlot, QTimer, pyqtSignal from PyQt5.QtGui import QBrush, QColorConstants, QFont from PyQt5.QtWidgets import QApplication, QWidget @@ -6,6 +6,8 @@ class TabLog(QWidget, Ui_TabLog): + narrativeUpdated = pyqtSignal(str) + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setupUi(self) @@ -21,6 +23,19 @@ def __init__(self, *args, **kwargs): self.spinBoxFontSize.valueChanged.connect(self.setFontSize) self.spinBoxFontSize.setValue(self.settings.value('font_size', 11, int)) + self.plainTextEditNarrative.textChanged.connect(self.narrativeChanged) + self.narrativeTimer = QTimer() + self.narrativeTimer.setSingleShot(True) + self.narrativeTimer.timeout.connect(self.narrativeTimerTimeout) + + @pyqtSlot() + def narrativeChanged(self): + self.narrativeTimer.start(10000) + + @pyqtSlot() + def narrativeTimerTimeout(self): + self.narrativeUpdated.emit(self.plainTextEditNarrative.toPlainText()) + @pyqtSlot() def clear(self): """Clear the log.""" diff --git a/iblrig/gui/ui_login.py b/iblrig/gui/ui_login.py index bb221ee3..a2366e93 100644 --- a/iblrig/gui/ui_login.py +++ b/iblrig/gui/ui_login.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'iblrig/gui/ui_login.ui' # -# Created by: PyQt5 UI code generator 5.15.9 +# Created by: PyQt5 UI code generator 5.15.10 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. diff --git a/iblrig/gui/ui_tab_log.py b/iblrig/gui/ui_tab_log.py index 8795df52..6c2199ab 100644 --- a/iblrig/gui/ui_tab_log.py +++ b/iblrig/gui/ui_tab_log.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'iblrig\gui\ui_tab_log.ui' +# Form implementation generated from reading ui file 'iblrig/gui/ui_tab_log.ui' # # Created by: PyQt5 UI code generator 5.15.10 # @@ -14,16 +14,41 @@ class Ui_TabLog(object): def setupUi(self, TabLog): TabLog.setObjectName("TabLog") - TabLog.resize(607, 766) + TabLog.resize(619, 821) self.verticalLayout = QtWidgets.QVBoxLayout(TabLog) self.verticalLayout.setObjectName("verticalLayout") - self.plainTextEditLog = QtWidgets.QPlainTextEdit(TabLog) + self.splitter = QtWidgets.QSplitter(TabLog) + self.splitter.setFrameShape(QtWidgets.QFrame.NoFrame) + self.splitter.setOrientation(QtCore.Qt.Vertical) + self.splitter.setHandleWidth(12) + self.splitter.setChildrenCollapsible(False) + self.splitter.setObjectName("splitter") + self.widgetLog = QtWidgets.QWidget(self.splitter) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(2) + sizePolicy.setHeightForWidth(self.widgetLog.sizePolicy().hasHeightForWidth()) + self.widgetLog.setSizePolicy(sizePolicy) + self.widgetLog.setObjectName("widgetLog") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widgetLog) + self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.groupBoxLog = QtWidgets.QGroupBox(self.widgetLog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(3) + sizePolicy.setHeightForWidth(self.groupBoxLog.sizePolicy().hasHeightForWidth()) + self.groupBoxLog.setSizePolicy(sizePolicy) + self.groupBoxLog.setObjectName("groupBoxLog") + self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBoxLog) + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.plainTextEditLog = QtWidgets.QPlainTextEdit(self.groupBoxLog) self.plainTextEditLog.setStyleSheet("QPlainTextEdit {background-color: rgb(0, 0, 0)};") self.plainTextEditLog.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap) self.plainTextEditLog.setReadOnly(True) self.plainTextEditLog.setObjectName("plainTextEditLog") - self.verticalLayout.addWidget(self.plainTextEditLog) - self.widget = QtWidgets.QWidget(TabLog) + self.verticalLayout_5.addWidget(self.plainTextEditLog) + self.widget = QtWidgets.QWidget(self.groupBoxLog) self.widget.setObjectName("widget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) @@ -48,7 +73,27 @@ def setupUi(self, TabLog): self.pushButtonClipboard.setIcon(icon) self.pushButtonClipboard.setObjectName("pushButtonClipboard") self.horizontalLayout.addWidget(self.pushButtonClipboard) - self.verticalLayout.addWidget(self.widget) + self.verticalLayout_5.addWidget(self.widget) + self.verticalLayout_2.addWidget(self.groupBoxLog) + self.widgetNarrative = QtWidgets.QWidget(self.splitter) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(1) + sizePolicy.setHeightForWidth(self.widgetNarrative.sizePolicy().hasHeightForWidth()) + self.widgetNarrative.setSizePolicy(sizePolicy) + self.widgetNarrative.setObjectName("widgetNarrative") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widgetNarrative) + self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.groupsBoxNarrative = QtWidgets.QGroupBox(self.widgetNarrative) + self.groupsBoxNarrative.setObjectName("groupsBoxNarrative") + self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupsBoxNarrative) + self.verticalLayout_4.setObjectName("verticalLayout_4") + self.plainTextEditNarrative = QtWidgets.QPlainTextEdit(self.groupsBoxNarrative) + self.plainTextEditNarrative.setObjectName("plainTextEditNarrative") + self.verticalLayout_4.addWidget(self.plainTextEditNarrative) + self.verticalLayout_3.addWidget(self.groupsBoxNarrative) + self.verticalLayout.addWidget(self.splitter) self.labelFontSize.setBuddy(self.spinBoxFontSize) self.retranslateUi(TabLog) @@ -57,11 +102,13 @@ def setupUi(self, TabLog): def retranslateUi(self, TabLog): _translate = QtCore.QCoreApplication.translate TabLog.setWindowTitle(_translate("TabLog", "Form")) + self.groupBoxLog.setTitle(_translate("TabLog", "Session Log")) self.labelFontSize.setStatusTip(_translate("TabLog", "Set the log\'s font size")) self.labelFontSize.setText(_translate("TabLog", "&Font Size")) self.spinBoxFontSize.setStatusTip(_translate("TabLog", "Set the log\'s font size")) self.pushButtonClipboard.setStatusTip(_translate("TabLog", "Copy log to clipboard")) self.pushButtonClipboard.setText(_translate("TabLog", " &Copy")) + self.groupsBoxNarrative.setTitle(_translate("TabLog", "Session Narrative")) from iblrig.gui import resources_rc diff --git a/iblrig/gui/ui_tab_log.ui b/iblrig/gui/ui_tab_log.ui index f3a066b3..541b1e0d 100644 --- a/iblrig/gui/ui_tab_log.ui +++ b/iblrig/gui/ui_tab_log.ui @@ -6,8 +6,8 @@ 0 0 - 607 - 766 + 619 + 821 @@ -15,99 +15,186 @@ - - - QPlainTextEdit {background-color: rgb(0, 0, 0)}; + + + QFrame::NoFrame - - QPlainTextEdit::NoWrap + + Qt::Vertical - - true + + 12 - - - - - - - 0 - - - 0 - - - 0 + + false + + + + + 0 + 2 + - - 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 3 + + + + Session Log + + + + + + QPlainTextEdit {background-color: rgb(0, 0, 0)}; + + + QPlainTextEdit::NoWrap + + + true + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Set the log's font size + + + &Font Size + + + spinBoxFontSize + + + + + + + Set the log's font size + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + QAbstractSpinBox::PlusMinus + + + false + + + 7 + + + 99 + + + 11 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Copy log to clipboard + + + &Copy + + + + :/images/clipboard:/images/clipboard + + + + + + + + + + + + + + + 0 + 1 + - - - - Set the log's font size - - - &Font Size - - - spinBoxFontSize - - - - - - - Set the log's font size - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - QAbstractSpinBox::PlusMinus - - - false - - - 7 - - - 99 - - - 11 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Copy log to clipboard - - - &Copy - - - - :/images/clipboard:/images/clipboard - - - - + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Session Narrative + + + + + + + + + + diff --git a/iblrig/gui/wizard.py b/iblrig/gui/wizard.py index 9e0153d4..b723d879 100644 --- a/iblrig/gui/wizard.py +++ b/iblrig/gui/wizard.py @@ -16,7 +16,7 @@ import pyqtgraph as pg from pydantic import ValidationError from PyQt5 import QtCore, QtGui, QtWidgets -from PyQt5.QtCore import QThreadPool +from PyQt5.QtCore import QThreadPool, pyqtSlot from PyQt5.QtWidgets import QStyle from requests import HTTPError from serial import SerialException @@ -969,6 +969,9 @@ def start_stop(self): self.uiPushStart.setIcon(self.style().standardIcon(QStyle.SP_MediaStop)) self._enable_ui_elements() + self.tabLog.plainTextEditNarrative.clear() + self.tabLog.narrativeUpdated.connect(self._on_updated_narrative) + # Manage appended session self.append_session = False if self.previous_subject == self.model.subject and not self.model.hardware_settings.MAIN_SYNC: @@ -1063,9 +1066,15 @@ def start_stop(self): self.tabWidget.setCurrentIndex(self.tabWidget.indexOf(self.tabLog)) case 'Stop': self.uiPushStart.setEnabled(False) + self.tabLog.narrativeUpdated.disconnect() if self.model.session_folder and self.model.session_folder.exists(): self.model.session_folder.joinpath('.stop').touch() + @pyqtSlot(str) + def _on_updated_narrative(self, narrative: str): + with self.model.session_folder.joinpath('narrative.txt').open('w') as f: + f.write(narrative) + def _on_read_standard_output(self): """ Read and process standard output entries. @@ -1196,6 +1205,7 @@ def _enable_ui_elements(self): and len(self.uiListProjects.selectedIndexes()) > 0 and len(self.uiListProcedures.selectedIndexes()) > 0 ) + self.tabLog.plainTextEditNarrative.setEnabled(is_running) self.uiPushPause.setEnabled(is_running) self.uiPushFlush.setEnabled(not is_running) self.uiPushReward.setEnabled(not is_running) From 925051bbcc230ec85d57004625666856e00c5378 Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Thu, 5 Dec 2024 14:25:33 +0000 Subject: [PATCH 09/14] finish implementation of narrative editor --- iblrig/gui/tab_log.py | 8 ++++---- iblrig/gui/ui_login.py | 2 +- iblrig/gui/ui_tab_log.py | 3 ++- iblrig/gui/ui_tab_log.ui | 6 +++++- iblrig/gui/wizard.py | 8 +++++--- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/iblrig/gui/tab_log.py b/iblrig/gui/tab_log.py index 3ed4bbaf..227f23b5 100644 --- a/iblrig/gui/tab_log.py +++ b/iblrig/gui/tab_log.py @@ -1,4 +1,4 @@ -from PyQt5.QtCore import QSettings, pyqtSlot, QTimer, pyqtSignal +from PyQt5.QtCore import QSettings, QTimer, pyqtSignal, pyqtSlot from PyQt5.QtGui import QBrush, QColorConstants, QFont from PyQt5.QtWidgets import QApplication, QWidget @@ -6,7 +6,7 @@ class TabLog(QWidget, Ui_TabLog): - narrativeUpdated = pyqtSignal(str) + narrativeUpdated = pyqtSignal(bytes) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -30,11 +30,11 @@ def __init__(self, *args, **kwargs): @pyqtSlot() def narrativeChanged(self): - self.narrativeTimer.start(10000) + self.narrativeTimer.start(5000) @pyqtSlot() def narrativeTimerTimeout(self): - self.narrativeUpdated.emit(self.plainTextEditNarrative.toPlainText()) + self.narrativeUpdated.emit(str.encode(self.plainTextEditNarrative.toPlainText())) @pyqtSlot() def clear(self): diff --git a/iblrig/gui/ui_login.py b/iblrig/gui/ui_login.py index a2366e93..25325ec5 100644 --- a/iblrig/gui/ui_login.py +++ b/iblrig/gui/ui_login.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'iblrig/gui/ui_login.ui' +# Form implementation generated from reading ui file 'iblrig\gui\ui_login.ui' # # Created by: PyQt5 UI code generator 5.15.10 # diff --git a/iblrig/gui/ui_tab_log.py b/iblrig/gui/ui_tab_log.py index 6c2199ab..3c846c1f 100644 --- a/iblrig/gui/ui_tab_log.py +++ b/iblrig/gui/ui_tab_log.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'iblrig/gui/ui_tab_log.ui' +# Form implementation generated from reading ui file 'iblrig\gui\ui_tab_log.ui' # # Created by: PyQt5 UI code generator 5.15.10 # @@ -109,6 +109,7 @@ def retranslateUi(self, TabLog): self.pushButtonClipboard.setStatusTip(_translate("TabLog", "Copy log to clipboard")) self.pushButtonClipboard.setText(_translate("TabLog", " &Copy")) self.groupsBoxNarrative.setTitle(_translate("TabLog", "Session Narrative")) + self.plainTextEditNarrative.setPlaceholderText(_translate("TabLog", "Enter your obvservations here ...")) from iblrig.gui import resources_rc diff --git a/iblrig/gui/ui_tab_log.ui b/iblrig/gui/ui_tab_log.ui index 541b1e0d..641db1f6 100644 --- a/iblrig/gui/ui_tab_log.ui +++ b/iblrig/gui/ui_tab_log.ui @@ -188,7 +188,11 @@ - + + + Enter your obvservations here ... + + diff --git a/iblrig/gui/wizard.py b/iblrig/gui/wizard.py index b723d879..6681adcf 100644 --- a/iblrig/gui/wizard.py +++ b/iblrig/gui/wizard.py @@ -1070,9 +1070,11 @@ def start_stop(self): if self.model.session_folder and self.model.session_folder.exists(): self.model.session_folder.joinpath('.stop').touch() - @pyqtSlot(str) - def _on_updated_narrative(self, narrative: str): - with self.model.session_folder.joinpath('narrative.txt').open('w') as f: + @pyqtSlot(bytes) + def _on_updated_narrative(self, narrative: bytes): + """Update narrative.txt if text-field has been modified.""" + self.model.session_folder.mkdir(parents=True, exist_ok=True) + with self.model.session_folder.joinpath('narrative.txt').open('w+b') as f: f.write(narrative) def _on_read_standard_output(self): From c6a954a2e583313ff7fb568407aafa594e6a6d42 Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Thu, 5 Dec 2024 14:29:39 +0000 Subject: [PATCH 10/14] write narrative at end of session --- iblrig/gui/wizard.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/iblrig/gui/wizard.py b/iblrig/gui/wizard.py index 6681adcf..2727c37b 100644 --- a/iblrig/gui/wizard.py +++ b/iblrig/gui/wizard.py @@ -1066,7 +1066,11 @@ def start_stop(self): self.tabWidget.setCurrentIndex(self.tabWidget.indexOf(self.tabLog)) case 'Stop': self.uiPushStart.setEnabled(False) + + self.tabLog.narrativeTimerTimeout() self.tabLog.narrativeUpdated.disconnect() + self.tabLog.plainTextEditNarrative.setEnabled(False) + if self.model.session_folder and self.model.session_folder.exists(): self.model.session_folder.joinpath('.stop').touch() From 02ec0096b69a4d0d5e72530ff21b28016f5aa6d4 Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Thu, 5 Dec 2024 14:32:19 +0000 Subject: [PATCH 11/14] avoid non-necessary write operations --- iblrig/gui/tab_log.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/iblrig/gui/tab_log.py b/iblrig/gui/tab_log.py index 227f23b5..75671559 100644 --- a/iblrig/gui/tab_log.py +++ b/iblrig/gui/tab_log.py @@ -6,6 +6,7 @@ class TabLog(QWidget, Ui_TabLog): + _narrative = b'' narrativeUpdated = pyqtSignal(bytes) def __init__(self, *args, **kwargs): @@ -34,7 +35,10 @@ def narrativeChanged(self): @pyqtSlot() def narrativeTimerTimeout(self): - self.narrativeUpdated.emit(str.encode(self.plainTextEditNarrative.toPlainText())) + narrative = str.encode(self.plainTextEditNarrative.toPlainText()) + if narrative != self._narrative: + self.narrativeUpdated.emit(narrative) + self._narrative = narrative @pyqtSlot() def clear(self): From c913c8f163bdf8d75d3cb21b8c930b462c8077ce Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Thu, 5 Dec 2024 15:38:04 +0000 Subject: [PATCH 12/14] prepare release --- CHANGELOG.md | 5 +- iblrig/__init__.py | 2 +- pdm.lock | 622 +++++++++++++++++++++++---------------------- pyproject.toml | 6 +- 4 files changed, 320 insertions(+), 315 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 953e234d..271d7614 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,12 @@ Changelog ========= -8.25.1 +8.26.0 ------ +* feature: added GUI field for session narrative * changed: renamed menu item for getting V7 training status +* changed: documentation and tests +* removed: detailed version strings for IBLRIG (+dirty etc) 8.25.0 ------ diff --git a/iblrig/__init__.py b/iblrig/__init__.py index 32fc16ff..94d5e20f 100644 --- a/iblrig/__init__.py +++ b/iblrig/__init__.py @@ -6,4 +6,4 @@ # 5) git tag the release in accordance to the version number below (after merge!) # >>> git tag 8.15.6 # >>> git push origin --tags -__version__ = '8.25.1' +__version__ = '8.26.0' diff --git a/pdm.lock b/pdm.lock index a94baf43..2ea5974d 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "ci", "dev", "doc", "project-extraction", "test", "typing"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:ca343d4cc1ca61beab39d6df14b533795100124a87d61f5935a2edb3de2f5028" +content_hash = "sha256:929627e3cbf02e2d0e6981063bcea0ca78239f62528cfd70c906d929786bbb98" [[metadata.targets]] requires_python = "==3.10.*" @@ -76,16 +76,13 @@ files = [ [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.0" +requires_python = ">=3.8" summary = "Annotate AST trees with source code positions" groups = ["default", "dev", "doc"] -dependencies = [ - "six>=1.12.0", - "typing; python_version < \"3.5\"", -] files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, + {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, + {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, ] [[package]] @@ -132,23 +129,23 @@ files = [ [[package]] name = "boto3" -version = "1.35.58" +version = "1.35.76" requires_python = ">=3.8" summary = "The AWS SDK for Python" groups = ["default"] dependencies = [ - "botocore<1.36.0,>=1.35.58", + "botocore<1.36.0,>=1.35.76", "jmespath<2.0.0,>=0.7.1", "s3transfer<0.11.0,>=0.10.0", ] files = [ - {file = "boto3-1.35.58-py3-none-any.whl", hash = "sha256:856896fd5fc5871758eb04b27bad5bbbf0fdb6143a923f9e8d10125351efdf98"}, - {file = "boto3-1.35.58.tar.gz", hash = "sha256:1ee139e63f1545ee0192914cfe422b68360b8c344a94e4612ac657dd7ece93de"}, + {file = "boto3-1.35.76-py3-none-any.whl", hash = "sha256:69458399f41f57a50770c8974796d96978bcca44915c260319696bb43e47dffd"}, + {file = "boto3-1.35.76.tar.gz", hash = "sha256:31ddcdb6f15dace2b68f6a0f11bdb58dd3ae79b8a3ccb174ff811ef0bbf938e0"}, ] [[package]] name = "botocore" -version = "1.35.58" +version = "1.35.76" requires_python = ">=3.8" summary = "Low-level, data-driven core of boto 3." groups = ["default"] @@ -159,8 +156,8 @@ dependencies = [ "urllib3<1.27,>=1.25.4; python_version < \"3.10\"", ] files = [ - {file = "botocore-1.35.58-py3-none-any.whl", hash = "sha256:647b8706ae6484ee4c2208235f38976d9f0e52f80143e81d7941075215e96111"}, - {file = "botocore-1.35.58.tar.gz", hash = "sha256:8303309c7b59ddf04b11d79813530809d6b10b411ac9f93916d2032c283d6881"}, + {file = "botocore-1.35.76-py3-none-any.whl", hash = "sha256:b4729d12d00267b3185628f83543917b6caae292385230ab464067621aa086af"}, + {file = "botocore-1.35.76.tar.gz", hash = "sha256:a75a42ae53395796b8300c5fefb2d65a8696dc40dc85e49cf3a769e0c0202b13"}, ] [[package]] @@ -390,84 +387,90 @@ files = [ [[package]] name = "coverage" -version = "7.6.4" +version = "7.6.8" requires_python = ">=3.9" summary = "Code coverage measurement for Python" groups = ["dev", "test"] files = [ - {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, - {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, - {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, - {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, - {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, - {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed"}, + {file = "coverage-7.6.8-cp310-cp310-win32.whl", hash = "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e"}, + {file = "coverage-7.6.8-cp310-cp310-win_amd64.whl", hash = "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a"}, + {file = "coverage-7.6.8-pp39.pp310-none-any.whl", hash = "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce"}, + {file = "coverage-7.6.8.tar.gz", hash = "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc"}, ] [[package]] name = "coverage" -version = "7.6.4" +version = "7.6.8" extras = ["toml"] requires_python = ">=3.9" summary = "Code coverage measurement for Python" groups = ["dev", "test"] dependencies = [ - "coverage==7.6.4", + "coverage==7.6.8", "tomli; python_full_version <= \"3.11.0a6\"", ] files = [ - {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, - {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, - {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, - {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, - {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, - {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed"}, + {file = "coverage-7.6.8-cp310-cp310-win32.whl", hash = "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e"}, + {file = "coverage-7.6.8-cp310-cp310-win_amd64.whl", hash = "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a"}, + {file = "coverage-7.6.8-pp39.pp310-none-any.whl", hash = "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce"}, + {file = "coverage-7.6.8.tar.gz", hash = "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc"}, ] [[package]] name = "cryptography" -version = "43.0.3" -requires_python = ">=3.7" +version = "44.0.0" +requires_python = "!=3.9.0,!=3.9.1,>=3.7" summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." groups = ["default"] dependencies = [ "cffi>=1.12; platform_python_implementation != \"PyPy\"", ] files = [ - {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, - {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, - {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, - {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, - {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, - {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, - {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, - {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, - {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, - {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, - {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, + {file = "cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:60eb32934076fa07e4316b7b2742fa52cbb190b42c2df2863dbc4230a0a9b385"}, + {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e"}, + {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e"}, + {file = "cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053"}, + {file = "cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd"}, + {file = "cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9abcc2e083cbe8dde89124a47e5e53ec38751f0d7dfd36801008f316a127d7ba"}, + {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64"}, + {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285"}, + {file = "cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417"}, + {file = "cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede"}, + {file = "cryptography-44.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731"}, + {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4"}, + {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756"}, + {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c"}, + {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa"}, + {file = "cryptography-44.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c"}, + {file = "cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02"}, ] [[package]] @@ -498,7 +501,7 @@ files = [ [[package]] name = "dask" -version = "2024.11.1" +version = "2024.12.0" requires_python = ">=3.10" summary = "Parallel PyData with Task Scheduling" groups = ["default"] @@ -513,8 +516,8 @@ dependencies = [ "toolz>=0.10.0", ] files = [ - {file = "dask-2024.11.1-py3-none-any.whl", hash = "sha256:749eb85ca16982bd0d754694afa3c2ac9dbcb11a598f25a47155ca12f562db5c"}, - {file = "dask-2024.11.1.tar.gz", hash = "sha256:6d8013304d97660ce802ccc9570aae8b0a00d8d3b041c125463611db14b93177"}, + {file = "dask-2024.12.0-py3-none-any.whl", hash = "sha256:e038e87b9f06e7927b81ecde6cf2b49aa699bb902fec11abba5697cb48baeb8d"}, + {file = "dask-2024.12.0.tar.gz", hash = "sha256:ffd02b06ac06b993df0b48e0ba4fe02abceb5c8b34b40bd91d63f33ec7a272a4"}, ] [[package]] @@ -533,17 +536,17 @@ files = [ [[package]] name = "debugpy" -version = "1.8.8" +version = "1.8.9" requires_python = ">=3.8" summary = "An implementation of the Debug Adapter Protocol for Python" groups = ["dev", "doc"] files = [ - {file = "debugpy-1.8.8-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e59b1607c51b71545cb3496876544f7186a7a27c00b436a62f285603cc68d1c6"}, - {file = "debugpy-1.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6531d952b565b7cb2fbd1ef5df3d333cf160b44f37547a4e7cf73666aca5d8d"}, - {file = "debugpy-1.8.8-cp310-cp310-win32.whl", hash = "sha256:b01f4a5e5c5fb1d34f4ccba99a20ed01eabc45a4684f4948b5db17a319dfb23f"}, - {file = "debugpy-1.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:535f4fb1c024ddca5913bb0eb17880c8f24ba28aa2c225059db145ee557035e9"}, - {file = "debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f"}, - {file = "debugpy-1.8.8.zip", hash = "sha256:e6355385db85cbd666be703a96ab7351bc9e6c61d694893206f8001e22aee091"}, + {file = "debugpy-1.8.9-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:cfe1e6c6ad7178265f74981edf1154ffce97b69005212fbc90ca22ddfe3d017e"}, + {file = "debugpy-1.8.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada7fb65102a4d2c9ab62e8908e9e9f12aed9d76ef44880367bc9308ebe49a0f"}, + {file = "debugpy-1.8.9-cp310-cp310-win32.whl", hash = "sha256:c36856343cbaa448171cba62a721531e10e7ffb0abff838004701454149bc037"}, + {file = "debugpy-1.8.9-cp310-cp310-win_amd64.whl", hash = "sha256:17c5e0297678442511cf00a745c9709e928ea4ca263d764e90d233208889a19e"}, + {file = "debugpy-1.8.9-py2.py3-none-any.whl", hash = "sha256:cc37a6c9987ad743d9c3a14fa1b1a14b7e4e6041f9dd0c8abf8895fe7a97b899"}, + {file = "debugpy-1.8.9.zip", hash = "sha256:1339e14c7d980407248f09824d1b25ff5c5616651689f1e0f0e51bdead3ea13e"}, ] [[package]] @@ -593,12 +596,12 @@ files = [ [[package]] name = "fastjsonschema" -version = "2.20.0" +version = "2.21.1" summary = "Fastest Python implementation of JSON schema" groups = ["dev", "doc"] files = [ - {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, - {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, + {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, + {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, ] [[package]] @@ -619,26 +622,26 @@ files = [ [[package]] name = "fonttools" -version = "4.54.1" +version = "4.55.2" requires_python = ">=3.8" summary = "Tools to manipulate font files" groups = ["default", "dev", "doc"] files = [ - {file = "fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2"}, - {file = "fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44"}, - {file = "fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02"}, - {file = "fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d"}, - {file = "fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd"}, - {file = "fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bef0f8603834643b1a6419d57902f18e7d950ec1a998fb70410635c598dc1a1e"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:944228b86d472612d3b48bcc83b31c25c2271e63fdc74539adfcfa7a96d487fb"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f0e55f5da594b85f269cfbecd2f6bd3e07d0abba68870bc3f34854de4fa4678"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b1a6e576db0c83c1b91925bf1363478c4bb968dbe8433147332fb5782ce6190"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:616368b15716781bc84df5c2191dc0540137aaef56c2771eb4b89b90933f347a"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7bbae4f3915225c2c37670da68e2bf18a21206060ad31dfb95fec91ef641caa7"}, + {file = "fonttools-4.55.2-cp310-cp310-win32.whl", hash = "sha256:8b02b10648d69d67a7eb055f4d3eedf4a85deb22fb7a19fbd9acbae7c7538199"}, + {file = "fonttools-4.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbea0ab841113ac8e8edde067e099b7288ffc6ac2dded538b131c2c0595d5f77"}, + {file = "fonttools-4.55.2-py3-none-any.whl", hash = "sha256:8e2d89fbe9b08d96e22c7a81ec04a4e8d8439c31223e2dc6f2f9fc8ff14bdf9f"}, + {file = "fonttools-4.55.2.tar.gz", hash = "sha256:45947e7b3f9673f91df125d375eb57b9a23f2a603f438a1aebf3171bffa7a205"}, ] [[package]] name = "fonttools" -version = "4.54.1" +version = "4.55.2" extras = ["woff"] requires_python = ">=3.8" summary = "Tools to manipulate font files" @@ -646,20 +649,20 @@ groups = ["dev", "doc"] dependencies = [ "brotli>=1.0.1; platform_python_implementation == \"CPython\"", "brotlicffi>=0.8.0; platform_python_implementation != \"CPython\"", - "fonttools==4.54.1", + "fonttools==4.55.2", "zopfli>=0.1.4", ] files = [ - {file = "fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2"}, - {file = "fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44"}, - {file = "fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02"}, - {file = "fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d"}, - {file = "fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd"}, - {file = "fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bef0f8603834643b1a6419d57902f18e7d950ec1a998fb70410635c598dc1a1e"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:944228b86d472612d3b48bcc83b31c25c2271e63fdc74539adfcfa7a96d487fb"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f0e55f5da594b85f269cfbecd2f6bd3e07d0abba68870bc3f34854de4fa4678"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b1a6e576db0c83c1b91925bf1363478c4bb968dbe8433147332fb5782ce6190"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:616368b15716781bc84df5c2191dc0540137aaef56c2771eb4b89b90933f347a"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7bbae4f3915225c2c37670da68e2bf18a21206060ad31dfb95fec91ef641caa7"}, + {file = "fonttools-4.55.2-cp310-cp310-win32.whl", hash = "sha256:8b02b10648d69d67a7eb055f4d3eedf4a85deb22fb7a19fbd9acbae7c7538199"}, + {file = "fonttools-4.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbea0ab841113ac8e8edde067e099b7288ffc6ac2dded538b131c2c0595d5f77"}, + {file = "fonttools-4.55.2-py3-none-any.whl", hash = "sha256:8e2d89fbe9b08d96e22c7a81ec04a4e8d8439c31223e2dc6f2f9fc8ff14bdf9f"}, + {file = "fonttools-4.55.2.tar.gz", hash = "sha256:45947e7b3f9673f91df125d375eb57b9a23f2a603f438a1aebf3171bffa7a205"}, ] [[package]] @@ -675,7 +678,7 @@ files = [ [[package]] name = "globus-sdk" -version = "3.47.0" +version = "3.49.0" requires_python = ">=3.8" summary = "Globus SDK for Python" groups = ["default"] @@ -687,8 +690,8 @@ dependencies = [ "typing-extensions>=4.0; python_version < \"3.11\"", ] files = [ - {file = "globus_sdk-3.47.0-py3-none-any.whl", hash = "sha256:c7a7af7646daf1ae8db9844c0de3964360ac7f48da4c7b528d0117d2a00dbe80"}, - {file = "globus_sdk-3.47.0.tar.gz", hash = "sha256:1c860c5115100a2cce1ef9cf1e053bea51393bcfd899f7f33050a29da9ec6198"}, + {file = "globus_sdk-3.49.0-py3-none-any.whl", hash = "sha256:6a048a2b1282c42f52585d89c31efacf30e9263d00f20d054e702a88b5b40530"}, + {file = "globus_sdk-3.49.0.tar.gz", hash = "sha256:6268a1a9ea04cce0eb06cd1a02eeaa8a04dad8682e16a6c65520b743446d0479"}, ] [[package]] @@ -778,12 +781,12 @@ files = [ [[package]] name = "ibllib" -version = "2.40.1" -requires_python = ">=3.8" +version = "3.1.0" +requires_python = ">=3.10" summary = "IBL libraries" groups = ["default"] dependencies = [ - "ONE-api>=2.10", + "ONE-api>=2.11", "boto3", "click>=7.0.0", "colorlog>=4.0.2", @@ -817,8 +820,8 @@ dependencies = [ "tqdm>=4.32.1", ] files = [ - {file = "ibllib-2.40.1-py3-none-any.whl", hash = "sha256:1eab186949395f4a660bad1f20a1e32893ea0cf4d83f90a6d7146e6bc3d31a44"}, - {file = "ibllib-2.40.1.tar.gz", hash = "sha256:8dbb2b70d3bf07b05eeb0b6cc32abd01192fc31fc6fe45832b191e5333eaff58"}, + {file = "ibllib-3.1.0-py3-none-any.whl", hash = "sha256:489adba69fd5b87fa92aacc11c053a462848e1df54eccb1bfe42baebd1157d89"}, + {file = "ibllib-3.1.0.tar.gz", hash = "sha256:c099e1e9062dd72915e86da6bbe2621b043022c62656a96490fbacd06c41d21f"}, ] [[package]] @@ -843,19 +846,19 @@ dependencies = [ [[package]] name = "iblqt" -version = "0.2.0" +version = "0.3.2" requires_python = ">=3.10" summary = "A collection of extensions to the Qt framework." groups = ["default"] dependencies = [ - "numpy", + "numpy<2.0.0", "pandas>2.0", "pyqtgraph>=0.13.7", "qtpy>=2.4.1", ] files = [ - {file = "iblqt-0.2.0-py3-none-any.whl", hash = "sha256:19c0bed7f768df941f963be73ed985d571333b89a5d1ea1801a30632ef445946"}, - {file = "iblqt-0.2.0.tar.gz", hash = "sha256:533ce276dc1a00cf23c0f7daf154eda2bbe56516cde05923c744d91a2a75b17e"}, + {file = "iblqt-0.3.2-py3-none-any.whl", hash = "sha256:4c1324b08bce4eb8f7cf3e4a29fdb47e87c7176d72c63c2ae9f65fe93454e533"}, + {file = "iblqt-0.3.2.tar.gz", hash = "sha256:4487006160c5cac65d06937660eb2fe1101ff72340c0bd5145904f959ad2b580"}, ] [[package]] @@ -911,7 +914,7 @@ files = [ [[package]] name = "imageio" -version = "2.36.0" +version = "2.36.1" requires_python = ">=3.9" summary = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." groups = ["default"] @@ -920,8 +923,8 @@ dependencies = [ "pillow>=8.3.2", ] files = [ - {file = "imageio-2.36.0-py3-none-any.whl", hash = "sha256:471f1eda55618ee44a3c9960911c35e647d9284c68f077e868df633398f137f0"}, - {file = "imageio-2.36.0.tar.gz", hash = "sha256:1c8f294db862c256e9562354d65aa54725b8dafed7f10f02bb3ec20ec1678850"}, + {file = "imageio-2.36.1-py3-none-any.whl", hash = "sha256:20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf"}, + {file = "imageio-2.36.1.tar.gz", hash = "sha256:e4e1d231f47f9a9e16100b0f7ce1a86e8856fb4d1c0fa2c4365a316f1746be62"}, ] [[package]] @@ -989,7 +992,7 @@ files = [ [[package]] name = "ipython" -version = "8.29.0" +version = "8.30.0" requires_python = ">=3.10" summary = "IPython: Productive Interactive Computing" groups = ["default", "dev", "doc"] @@ -1007,8 +1010,8 @@ dependencies = [ "typing-extensions>=4.6; python_version < \"3.12\"", ] files = [ - {file = "ipython-8.29.0-py3-none-any.whl", hash = "sha256:0188a1bd83267192123ccea7f4a8ed0a78910535dbaa3f37671dca76ebd429c8"}, - {file = "ipython-8.29.0.tar.gz", hash = "sha256:40b60e15b22591450eef73e40a027cf77bd652e757523eebc5bd7c7c498290eb"}, + {file = "ipython-8.30.0-py3-none-any.whl", hash = "sha256:85ec56a7e20f6c38fce7727dcca699ae4ffc85985aa7b23635a8008f918ae321"}, + {file = "ipython-8.30.0.tar.gz", hash = "sha256:cb0a405a306d2995a5cbb9901894d240784a9f341394c6ba3f4fe8c6eb89ff6e"}, ] [[package]] @@ -1096,7 +1099,7 @@ files = [ [[package]] name = "jupyter-cache" -version = "1.0.0" +version = "1.0.1" requires_python = ">=3.9" summary = "A defined interface for working with a cache of jupyter notebooks." groups = ["dev", "doc"] @@ -1111,8 +1114,8 @@ dependencies = [ "tabulate", ] files = [ - {file = "jupyter_cache-1.0.0-py3-none-any.whl", hash = "sha256:594b1c4e29b488b36547e12477645f489dbdc62cc939b2408df5679f79245078"}, - {file = "jupyter_cache-1.0.0.tar.gz", hash = "sha256:d0fa7d7533cd5798198d8889318269a8c1382ed3b22f622c09a9356521f48687"}, + {file = "jupyter_cache-1.0.1-py3-none-any.whl", hash = "sha256:9c3cafd825ba7da8b5830485343091143dff903e4d8c69db9349b728b140abf6"}, + {file = "jupyter_cache-1.0.1.tar.gz", hash = "sha256:16e808eb19e3fb67a223db906e131ea6e01f03aa27f49a7214ce6a5fec186fb9"}, ] [[package]] @@ -1274,7 +1277,7 @@ files = [ [[package]] name = "matplotlib" -version = "3.9.2" +version = "3.9.3" requires_python = ">=3.9" summary = "Python plotting package" groups = ["default"] @@ -1291,13 +1294,13 @@ dependencies = [ "python-dateutil>=2.7", ] files = [ - {file = "matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb"}, - {file = "matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66"}, - {file = "matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a"}, - {file = "matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae"}, - {file = "matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92"}, + {file = "matplotlib-3.9.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:41b016e3be4e740b66c79a031a0a6e145728dbc248142e751e8dab4f3188ca1d"}, + {file = "matplotlib-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e0143975fc2a6d7136c97e19c637321288371e8f09cff2564ecd73e865ea0b9"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f459c8ee2c086455744723628264e43c884be0c7d7b45d84b8cd981310b4815"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:687df7ceff57b8f070d02b4db66f75566370e7ae182a0782b6d3d21b0d6917dc"}, + {file = "matplotlib-3.9.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:edd14cf733fdc4f6e6fe3f705af97676a7e52859bf0044aa2c84e55be739241c"}, + {file = "matplotlib-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c40c244221a1adbb1256692b1133c6fb89418df27bf759a31a333e7912a4010"}, + {file = "matplotlib-3.9.3.tar.gz", hash = "sha256:cd5dbbc8e25cad5f706845c4d100e2c8b34691b412b93717ce38d8ae803bcfa5"}, ] [[package]] @@ -1362,13 +1365,13 @@ files = [ [[package]] name = "multimethod" -version = "1.10" -requires_python = ">=3.8" +version = "1.12" +requires_python = ">=3.9" summary = "Multiple argument dispatching." groups = ["default"] files = [ - {file = "multimethod-1.10-py3-none-any.whl", hash = "sha256:afd84da9c3d0445c84f827e4d63ad42d17c6d29b122427c6dee9032ac2d2a0d4"}, - {file = "multimethod-1.10.tar.gz", hash = "sha256:daa45af3fe257f73abb69673fd54ddeaf31df0eb7363ad6e1251b7c9b192d8c5"}, + {file = "multimethod-1.12-py3-none-any.whl", hash = "sha256:fd0c473c43558908d97cc06e4d68e8f69202f167db46f7b4e4058893e7dbdf60"}, + {file = "multimethod-1.12.tar.gz", hash = "sha256:8db8ef2a8d2a247e3570cc23317680892fdf903d84c8c1053667c8e8f7671a67"}, ] [[package]] @@ -1447,7 +1450,7 @@ files = [ [[package]] name = "nbclient" -version = "0.10.0" +version = "0.10.1" requires_python = ">=3.8.0" summary = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." groups = ["dev", "doc"] @@ -1458,8 +1461,8 @@ dependencies = [ "traitlets>=5.4", ] files = [ - {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, - {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, + {file = "nbclient-0.10.1-py3-none-any.whl", hash = "sha256:949019b9240d66897e442888cfb618f69ef23dc71c01cb5fced8499c2cfc084d"}, + {file = "nbclient-0.10.1.tar.gz", hash = "sha256:3e93e348ab27e712acd46fccd809139e356eb9a31aab641d1a7991a6eb4e6f68"}, ] [[package]] @@ -1638,7 +1641,7 @@ files = [ [[package]] name = "pandera" -version = "0.21.0" +version = "0.21.1" requires_python = ">=3.7" summary = "A light-weight and flexible data validation and testing tool for statistical data objects." groups = ["default"] @@ -1654,8 +1657,8 @@ dependencies = [ "wrapt", ] files = [ - {file = "pandera-0.21.0-py3-none-any.whl", hash = "sha256:ee694182ff9f15c165d14a99a9b90bcdf95bce07c1935f73c69718db15c85809"}, - {file = "pandera-0.21.0.tar.gz", hash = "sha256:12a1e67478dc72459eff8329036e1d3502fcc4332c9c70bdbd88a78b7597aa8a"}, + {file = "pandera-0.21.1-py3-none-any.whl", hash = "sha256:cb6323952815ab82484bd8371f71d0b609a9cd0f515a7b91b2c076871b4db387"}, + {file = "pandera-0.21.1.tar.gz", hash = "sha256:3a40b643cd32d1fdd4142917ede1ae91b93a5f3469b01fcf70ffd1046964818c"}, ] [[package]] @@ -1686,7 +1689,7 @@ files = [ [[package]] name = "patsy" -version = "1.0.0" +version = "1.0.1" requires_python = ">=3.6" summary = "A Python package for describing statistical models and for building design matrices." groups = ["default"] @@ -1694,8 +1697,8 @@ dependencies = [ "numpy>=1.4", ] files = [ - {file = "patsy-1.0.0-py2.py3-none-any.whl", hash = "sha256:290ca9aa81b1821f705f86ab3f89cce3f898cdc020ab0304ee6e1f0f42513ef0"}, - {file = "patsy-1.0.0.tar.gz", hash = "sha256:787d2a5d15333fb1e4dc11331b2e7fd17d92f9a815db2fbca29b50c0e6c0159d"}, + {file = "patsy-1.0.1-py2.py3-none-any.whl", hash = "sha256:751fb38f9e97e62312e921a1954b81e1bb2bcda4f5eeabaf94db251ee791509c"}, + {file = "patsy-1.0.1.tar.gz", hash = "sha256:e786a9391eec818c054e359b737bbce692f051aee4c661f4141cc88fb459c0c4"}, ] [[package]] @@ -1784,10 +1787,10 @@ files = [ [[package]] name = "project-extraction" -version = "0.4.0" +version = "0.5.0.post0" requires_python = "~=3.10" git = "https://github.com/int-brain-lab/project_extraction.git" -revision = "c3ae3e2e54072e273cb31d16b04cb264a03ee6f4" +revision = "d694a7024e65beeed482e59bc1289c408db3948f" summary = "Custom extractors for satellite tasks" groups = ["project-extraction"] @@ -1860,19 +1863,19 @@ files = [ [[package]] name = "pyarrow" -version = "18.0.0" +version = "18.1.0" requires_python = ">=3.9" summary = "Python library for Apache Arrow" groups = ["default"] files = [ - {file = "pyarrow-18.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2333f93260674e185cfbf208d2da3007132572e56871f451ba1a556b45dae6e2"}, - {file = "pyarrow-18.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:4c381857754da44326f3a49b8b199f7f87a51c2faacd5114352fc78de30d3aba"}, - {file = "pyarrow-18.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:603cd8ad4976568954598ef0a6d4ed3dfb78aff3d57fa8d6271f470f0ce7d34f"}, - {file = "pyarrow-18.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58a62549a3e0bc9e03df32f350e10e1efb94ec6cf63e3920c3385b26663948ce"}, - {file = "pyarrow-18.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bc97316840a349485fbb137eb8d0f4d7057e1b2c1272b1a20eebbbe1848f5122"}, - {file = "pyarrow-18.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2e549a748fa8b8715e734919923f69318c953e077e9c02140ada13e59d043310"}, - {file = "pyarrow-18.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:606e9a3dcb0f52307c5040698ea962685fb1c852d72379ee9412be7de9c5f9e2"}, - {file = "pyarrow-18.0.0.tar.gz", hash = "sha256:a6aa027b1a9d2970cf328ccd6dbe4a996bc13c39fd427f502782f5bdb9ca20f5"}, + {file = "pyarrow-18.1.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e21488d5cfd3d8b500b3238a6c4b075efabc18f0f6d80b29239737ebd69caa6c"}, + {file = "pyarrow-18.1.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b516dad76f258a702f7ca0250885fc93d1fa5ac13ad51258e39d402bd9e2e1e4"}, + {file = "pyarrow-18.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f443122c8e31f4c9199cb23dca29ab9427cef990f283f80fe15b8e124bcc49b"}, + {file = "pyarrow-18.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a03da7f2758645d17b7b4f83c8bffeae5bbb7f974523fe901f36288d2eab71"}, + {file = "pyarrow-18.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ba17845efe3aa358ec266cf9cc2800fa73038211fb27968bfa88acd09261a470"}, + {file = "pyarrow-18.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3c35813c11a059056a22a3bef520461310f2f7eea5c8a11ef9de7062a23f8d56"}, + {file = "pyarrow-18.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9736ba3c85129d72aefa21b4f3bd715bc4190fe4426715abfff90481e7d00812"}, + {file = "pyarrow-18.1.0.tar.gz", hash = "sha256:9386d3ca9c145b5539a1cfc75df07757dff870168c959b473a0bccbc3abc8c73"}, ] [[package]] @@ -1899,7 +1902,7 @@ files = [ [[package]] name = "pydantic" -version = "2.10.1" +version = "2.10.3" requires_python = ">=3.8" summary = "Data validation using Python type hints" groups = ["default"] @@ -1909,8 +1912,8 @@ dependencies = [ "typing-extensions>=4.12.2", ] files = [ - {file = "pydantic-2.10.1-py3-none-any.whl", hash = "sha256:a8d20db84de64cf4a7d59e899c2caf0fe9d660c7cfc482528e7020d7dd189a7e"}, - {file = "pydantic-2.10.1.tar.gz", hash = "sha256:a4daca2dc0aa429555e0656d6bf94873a7dc5f54ee42b1f5873d666fb3f35560"}, + {file = "pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d"}, + {file = "pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9"}, ] [[package]] @@ -1983,29 +1986,29 @@ files = [ [[package]] name = "pyjwt" -version = "2.9.0" -requires_python = ">=3.8" +version = "2.10.1" +requires_python = ">=3.9" summary = "JSON Web Token implementation in Python" groups = ["default"] files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, + {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, + {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, ] [[package]] name = "pyjwt" -version = "2.9.0" +version = "2.10.1" extras = ["crypto"] -requires_python = ">=3.8" +requires_python = ">=3.9" summary = "JSON Web Token implementation in Python" groups = ["default"] dependencies = [ "cryptography>=3.4.0", - "pyjwt==2.9.0", + "pyjwt==2.10.1", ] files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, + {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, + {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, ] [[package]] @@ -2159,7 +2162,7 @@ files = [ [[package]] name = "pytest" -version = "8.3.3" +version = "8.3.4" requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" groups = ["default", "ci", "dev", "test"] @@ -2172,8 +2175,8 @@ dependencies = [ "tomli>=1; python_version < \"3.11\"", ] files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [[package]] @@ -2360,69 +2363,69 @@ files = [ [[package]] name = "rpds-py" -version = "0.21.0" +version = "0.22.3" requires_python = ">=3.9" summary = "Python bindings to Rust's persistent data structures (rpds)" groups = ["dev", "doc"] files = [ - {file = "rpds_py-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a017f813f24b9df929674d0332a374d40d7f0162b326562daae8066b502d0590"}, - {file = "rpds_py-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:20cc1ed0bcc86d8e1a7e968cce15be45178fd16e2ff656a243145e0b439bd250"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad116dda078d0bc4886cb7840e19811562acdc7a8e296ea6ec37e70326c1b41c"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:808f1ac7cf3b44f81c9475475ceb221f982ef548e44e024ad5f9e7060649540e"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de552f4a1916e520f2703ec474d2b4d3f86d41f353e7680b597512ffe7eac5d0"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efec946f331349dfc4ae9d0e034c263ddde19414fe5128580f512619abed05f1"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b80b4690bbff51a034bfde9c9f6bf9357f0a8c61f548942b80f7b66356508bf5"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:085ed25baac88953d4283e5b5bd094b155075bb40d07c29c4f073e10623f9f2e"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:daa8efac2a1273eed2354397a51216ae1e198ecbce9036fba4e7610b308b6153"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:95a5bad1ac8a5c77b4e658671642e4af3707f095d2b78a1fdd08af0dfb647624"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3e53861b29a13d5b70116ea4230b5f0f3547b2c222c5daa090eb7c9c82d7f664"}, - {file = "rpds_py-0.21.0-cp310-none-win32.whl", hash = "sha256:ea3a6ac4d74820c98fcc9da4a57847ad2cc36475a8bd9683f32ab6d47a2bd682"}, - {file = "rpds_py-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:b8f107395f2f1d151181880b69a2869c69e87ec079c49c0016ab96860b6acbe5"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6b4ef7725386dc0762857097f6b7266a6cdd62bfd209664da6712cb26acef035"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6bc0e697d4d79ab1aacbf20ee5f0df80359ecf55db33ff41481cf3e24f206919"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da52d62a96e61c1c444f3998c434e8b263c384f6d68aca8274d2e08d1906325c"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98e4fe5db40db87ce1c65031463a760ec7906ab230ad2249b4572c2fc3ef1f9f"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30bdc973f10d28e0337f71d202ff29345320f8bc49a31c90e6c257e1ccef4333"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:faa5e8496c530f9c71f2b4e1c49758b06e5f4055e17144906245c99fa6d45356"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32eb88c30b6a4f0605508023b7141d043a79b14acb3b969aa0b4f99b25bc7d4a"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a89a8ce9e4e75aeb7fa5d8ad0f3fecdee813802592f4f46a15754dcb2fd6b061"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:241e6c125568493f553c3d0fdbb38c74babf54b45cef86439d4cd97ff8feb34d"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b766a9f57663396e4f34f5140b3595b233a7b146e94777b97a8413a1da1be18"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:af4a644bf890f56e41e74be7d34e9511e4954894d544ec6b8efe1e21a1a8da6c"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3e30a69a706e8ea20444b98a49f386c17b26f860aa9245329bab0851ed100677"}, - {file = "rpds_py-0.21.0.tar.gz", hash = "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf"}, + {file = "rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652"}, + {file = "rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d"}, + {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, ] [[package]] name = "ruff" -version = "0.8.0" +version = "0.8.2" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." groups = ["dev", "test"] files = [ - {file = "ruff-0.8.0-py3-none-linux_armv6l.whl", hash = "sha256:fcb1bf2cc6706adae9d79c8d86478677e3bbd4ced796ccad106fd4776d395fea"}, - {file = "ruff-0.8.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:295bb4c02d58ff2ef4378a1870c20af30723013f441c9d1637a008baaf928c8b"}, - {file = "ruff-0.8.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b1f1c76b47c18fa92ee78b60d2d20d7e866c55ee603e7d19c1e991fad933a9a"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb0d4f250a7711b67ad513fde67e8870109e5ce590a801c3722580fe98c33a99"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e55cce9aa93c5d0d4e3937e47b169035c7e91c8655b0974e61bb79cf398d49c"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f4cd64916d8e732ce6b87f3f5296a8942d285bbbc161acee7fe561134af64f9"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c5c1466be2a2ebdf7c5450dd5d980cc87c8ba6976fb82582fea18823da6fa362"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2dabfd05b96b7b8f2da00d53c514eea842bff83e41e1cceb08ae1966254a51df"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:facebdfe5a5af6b1588a1d26d170635ead6892d0e314477e80256ef4a8470cf3"}, - {file = "ruff-0.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87a8e86bae0dbd749c815211ca11e3a7bd559b9710746c559ed63106d382bd9c"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85e654f0ded7befe2d61eeaf3d3b1e4ef3894469cd664ffa85006c7720f1e4a2"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:83a55679c4cb449fa527b8497cadf54f076603cc36779b2170b24f704171ce70"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:812e2052121634cf13cd6fddf0c1871d0ead1aad40a1a258753c04c18bb71bbd"}, - {file = "ruff-0.8.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:780d5d8523c04202184405e60c98d7595bdb498c3c6abba3b6d4cdf2ca2af426"}, - {file = "ruff-0.8.0-py3-none-win32.whl", hash = "sha256:5fdb6efecc3eb60bba5819679466471fd7d13c53487df7248d6e27146e985468"}, - {file = "ruff-0.8.0-py3-none-win_amd64.whl", hash = "sha256:582891c57b96228d146725975fbb942e1f30a0c4ba19722e692ca3eb25cc9b4f"}, - {file = "ruff-0.8.0-py3-none-win_arm64.whl", hash = "sha256:ba93e6294e9a737cd726b74b09a6972e36bb511f9a102f1d9a7e1ce94dd206a6"}, - {file = "ruff-0.8.0.tar.gz", hash = "sha256:a7ccfe6331bf8c8dad715753e157457faf7351c2b69f62f32c165c2dbcbacd44"}, + {file = "ruff-0.8.2-py3-none-linux_armv6l.whl", hash = "sha256:c49ab4da37e7c457105aadfd2725e24305ff9bc908487a9bf8d548c6dad8bb3d"}, + {file = "ruff-0.8.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ec016beb69ac16be416c435828be702ee694c0d722505f9c1f35e1b9c0cc1bf5"}, + {file = "ruff-0.8.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f05cdf8d050b30e2ba55c9b09330b51f9f97d36d4673213679b965d25a785f3c"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60f578c11feb1d3d257b2fb043ddb47501ab4816e7e221fbb0077f0d5d4e7b6f"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbd5cf9b0ae8f30eebc7b360171bd50f59ab29d39f06a670b3e4501a36ba5897"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b402ddee3d777683de60ff76da801fa7e5e8a71038f57ee53e903afbcefdaa58"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:705832cd7d85605cb7858d8a13d75993c8f3ef1397b0831289109e953d833d29"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:32096b41aaf7a5cc095fa45b4167b890e4c8d3fd217603f3634c92a541de7248"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e769083da9439508833cfc7c23e351e1809e67f47c50248250ce1ac52c21fb93"}, + {file = "ruff-0.8.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fe716592ae8a376c2673fdfc1f5c0c193a6d0411f90a496863c99cd9e2ae25d"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:81c148825277e737493242b44c5388a300584d73d5774defa9245aaef55448b0"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d261d7850c8367704874847d95febc698a950bf061c9475d4a8b7689adc4f7fa"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1ca4e3a87496dc07d2427b7dd7ffa88a1e597c28dad65ae6433ecb9f2e4f022f"}, + {file = "ruff-0.8.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:729850feed82ef2440aa27946ab39c18cb4a8889c1128a6d589ffa028ddcfc22"}, + {file = "ruff-0.8.2-py3-none-win32.whl", hash = "sha256:ac42caaa0411d6a7d9594363294416e0e48fc1279e1b0e948391695db2b3d5b1"}, + {file = "ruff-0.8.2-py3-none-win_amd64.whl", hash = "sha256:2aae99ec70abf43372612a838d97bfe77d45146254568d94926e8ed5bbb409ea"}, + {file = "ruff-0.8.2-py3-none-win_arm64.whl", hash = "sha256:fb88e2a506b70cfbc2de6fae6681c4f944f7dd5f2fe87233a7233d888bad73e8"}, + {file = "ruff-0.8.2.tar.gz", hash = "sha256:b84f4f414dda8ac7f75075c1fa0b905ac0ff25361f42e6d5da681a465e0f78e5"}, ] [[package]] name = "s3transfer" -version = "0.10.3" +version = "0.10.4" requires_python = ">=3.8" summary = "An Amazon S3 Transfer Manager" groups = ["default"] @@ -2430,8 +2433,8 @@ dependencies = [ "botocore<2.0a.0,>=1.33.2", ] files = [ - {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, - {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, + {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, + {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, ] [[package]] @@ -2519,24 +2522,24 @@ files = [ [[package]] name = "setuptools" -version = "75.4.0" +version = "75.6.0" requires_python = ">=3.9" summary = "Easily download, build, install, upgrade, and uninstall Python packages" groups = ["dev", "doc"] files = [ - {file = "setuptools-75.4.0-py3-none-any.whl", hash = "sha256:b3c5d862f98500b06ffdf7cc4499b48c46c317d8d56cb30b5c8bce4d88f5c216"}, - {file = "setuptools-75.4.0.tar.gz", hash = "sha256:1dc484f5cf56fd3fe7216d7b8df820802e7246cfb534a1db2aa64f14fcb9cdcb"}, + {file = "setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d"}, + {file = "setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6"}, ] [[package]] name = "six" -version = "1.16.0" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "1.17.0" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" summary = "Python 2 and 3 compatibility utilities" groups = ["default", "dev", "doc"] files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -2720,7 +2723,7 @@ files = [ [[package]] name = "sphinx-rtd-theme" -version = "3.0.1" +version = "3.0.2" requires_python = ">=3.8" summary = "Read the Docs theme for Sphinx" groups = ["dev", "doc"] @@ -2730,8 +2733,8 @@ dependencies = [ "sphinxcontrib-jquery<5,>=4", ] files = [ - {file = "sphinx_rtd_theme-3.0.1-py2.py3-none-any.whl", hash = "sha256:921c0ece75e90633ee876bd7b148cfaad136b481907ad154ac3669b6fc957916"}, - {file = "sphinx_rtd_theme-3.0.1.tar.gz", hash = "sha256:a4c5745d1b06dfcb80b7704fe532eb765b44065a8fad9851e4258c8804140703"}, + {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, + {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, ] [[package]] @@ -2916,7 +2919,7 @@ files = [ [[package]] name = "starlette" -version = "0.41.2" +version = "0.41.3" requires_python = ">=3.8" summary = "The little ASGI library that shines." groups = ["dev", "doc"] @@ -2925,8 +2928,8 @@ dependencies = [ "typing-extensions>=3.10.0; python_version < \"3.10\"", ] files = [ - {file = "starlette-0.41.2-py3-none-any.whl", hash = "sha256:fbc189474b4731cf30fcef52f18a8d070e3f3b46c6a04c97579e85e6ffca942d"}, - {file = "starlette-0.41.2.tar.gz", hash = "sha256:9834fd799d1a87fd346deb76158668cfa0b0d56f85caefe8268e2d97c3468b62"}, + {file = "starlette-0.41.3-py3-none-any.whl", hash = "sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7"}, + {file = "starlette-0.41.3.tar.gz", hash = "sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835"}, ] [[package]] @@ -3018,13 +3021,13 @@ files = [ [[package]] name = "tomli" -version = "2.1.0" +version = "2.2.1" requires_python = ">=3.8" summary = "A lil' TOML parser" groups = ["default", "ci", "dev", "doc", "test", "typing"] files = [ - {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, - {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] @@ -3040,27 +3043,27 @@ files = [ [[package]] name = "tornado" -version = "6.4.1" +version = "6.4.2" requires_python = ">=3.8" summary = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." groups = ["dev", "doc"] files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, + {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, + {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, + {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, ] [[package]] name = "tqdm" -version = "4.67.0" +version = "4.67.1" requires_python = ">=3.7" summary = "Fast, Extensible Progress Meter" groups = ["default"] @@ -3068,8 +3071,8 @@ dependencies = [ "colorama; platform_system == \"Windows\"", ] files = [ - {file = "tqdm-4.67.0-py3-none-any.whl", hash = "sha256:0cd8af9d56911acab92182e88d763100d4788bdf421d251616040cc4d44863be"}, - {file = "tqdm-4.67.0.tar.gz", hash = "sha256:fe5a6f95e6fe0b9755e9469b77b9c3cf850048224ecaa8293d7d2d31f97d869a"}, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] [[package]] @@ -3207,7 +3210,7 @@ files = [ [[package]] name = "uvicorn" -version = "0.32.0" +version = "0.32.1" requires_python = ">=3.8" summary = "The lightning-fast ASGI server." groups = ["dev", "doc"] @@ -3217,37 +3220,37 @@ dependencies = [ "typing-extensions>=4.0; python_version < \"3.11\"", ] files = [ - {file = "uvicorn-0.32.0-py3-none-any.whl", hash = "sha256:60b8f3a5ac027dcd31448f411ced12b5ef452c646f76f02f8cc3f25d8d26fd82"}, - {file = "uvicorn-0.32.0.tar.gz", hash = "sha256:f78b36b143c16f54ccdb8190d0a26b5f1901fe5a3c777e1ab29f26391af8551e"}, + {file = "uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e"}, + {file = "uvicorn-0.32.1.tar.gz", hash = "sha256:ee9519c246a72b1c084cea8d3b44ed6026e78a4a309cbedae9c37e4cb9fbb175"}, ] [[package]] name = "watchfiles" -version = "0.24.0" -requires_python = ">=3.8" +version = "1.0.0" +requires_python = ">=3.9" summary = "Simple, modern and high performance file watching and code reload in python." groups = ["dev", "doc"] dependencies = [ "anyio>=3.0.0", ] files = [ - {file = "watchfiles-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:083dc77dbdeef09fa44bb0f4d1df571d2e12d8a8f985dccde71ac3ac9ac067a0"}, - {file = "watchfiles-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e94e98c7cb94cfa6e071d401ea3342767f28eb5a06a58fafdc0d2a4974f4f35c"}, - {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82ae557a8c037c42a6ef26c494d0631cacca040934b101d001100ed93d43f361"}, - {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acbfa31e315a8f14fe33e3542cbcafc55703b8f5dcbb7c1eecd30f141df50db3"}, - {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b74fdffce9dfcf2dc296dec8743e5b0332d15df19ae464f0e249aa871fc1c571"}, - {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:449f43f49c8ddca87c6b3980c9284cab6bd1f5c9d9a2b00012adaaccd5e7decd"}, - {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4abf4ad269856618f82dee296ac66b0cd1d71450fc3c98532d93798e73399b7a"}, - {file = "watchfiles-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f895d785eb6164678ff4bb5cc60c5996b3ee6df3edb28dcdeba86a13ea0465e"}, - {file = "watchfiles-0.24.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ae3e208b31be8ce7f4c2c0034f33406dd24fbce3467f77223d10cd86778471c"}, - {file = "watchfiles-0.24.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2efec17819b0046dde35d13fb8ac7a3ad877af41ae4640f4109d9154ed30a188"}, - {file = "watchfiles-0.24.0-cp310-none-win32.whl", hash = "sha256:6bdcfa3cd6fdbdd1a068a52820f46a815401cbc2cb187dd006cb076675e7b735"}, - {file = "watchfiles-0.24.0-cp310-none-win_amd64.whl", hash = "sha256:54ca90a9ae6597ae6dc00e7ed0a040ef723f84ec517d3e7ce13e63e4bc82fa04"}, - {file = "watchfiles-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:632676574429bee8c26be8af52af20e0c718cc7f5f67f3fb658c71928ccd4f7f"}, - {file = "watchfiles-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a2a9891723a735d3e2540651184be6fd5b96880c08ffe1a98bae5017e65b544b"}, - {file = "watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7fa2bc0efef3e209a8199fd111b8969fe9db9c711acc46636686331eda7dd4"}, - {file = "watchfiles-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01550ccf1d0aed6ea375ef259706af76ad009ef5b0203a3a4cce0f6024f9b68a"}, - {file = "watchfiles-0.24.0.tar.gz", hash = "sha256:afb72325b74fa7a428c009c1b8be4b4d7c2afedafb2982827ef2156646df2fe1"}, + {file = "watchfiles-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1d19df28f99d6a81730658fbeb3ade8565ff687f95acb59665f11502b441be5f"}, + {file = "watchfiles-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:28babb38cf2da8e170b706c4b84aa7e4528a6fa4f3ee55d7a0866456a1662041"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ab123135b2f42517f04e720526d41448667ae8249e651385afb5cda31fedc0"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13a4f9ee0cd25682679eea5c14fc629e2eaa79aab74d963bc4e21f43b8ea1877"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e1d9284cc84de7855fcf83472e51d32daf6f6cecd094160192628bc3fee1b78"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ee5edc939f53466b329bbf2e58333a5461e6c7b50c980fa6117439e2c18b42d"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dccfc70480087567720e4e36ec381bba1ed68d7e5f368fe40c93b3b1eba0105"}, + {file = "watchfiles-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83a6d33a9eda0af6a7470240d1af487807adc269704fe76a4972dd982d16236"}, + {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:905f69aad276639eff3893759a07d44ea99560e67a1cf46ff389cd62f88872a2"}, + {file = "watchfiles-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09551237645d6bff3972592f2aa5424df9290e7a2e15d63c5f47c48cde585935"}, + {file = "watchfiles-1.0.0-cp310-none-win32.whl", hash = "sha256:d2b39aa8edd9e5f56f99a2a2740a251dc58515398e9ed5a4b3e5ff2827060755"}, + {file = "watchfiles-1.0.0-cp310-none-win_amd64.whl", hash = "sha256:2de52b499e1ab037f1a87cb8ebcb04a819bf087b1015a4cf6dcf8af3c2a2613e"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f159ac795785cde4899e0afa539f4c723fb5dd336ce5605bc909d34edd00b79b"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3d258d78341d5d54c0c804a5b7faa66cd30ba50b2756a7161db07ce15363b8d"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bbd0311588c2de7f9ea5cf3922ccacfd0ec0c1922870a2be503cc7df1ca8be7"}, + {file = "watchfiles-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a13ac46b545a7d0d50f7641eefe47d1597e7d1783a5d89e09d080e6dff44b0"}, + {file = "watchfiles-1.0.0.tar.gz", hash = "sha256:37566c844c9ce3b5deb964fe1a23378e575e74b114618d211fbda8f59d7b5dab"}, ] [[package]] @@ -3296,62 +3299,61 @@ files = [ [[package]] name = "websockets" -version = "14.0" +version = "14.1" requires_python = ">=3.9" summary = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" groups = ["dev", "doc"] files = [ - {file = "websockets-14.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:064a72c0602c2d2c2586143561e0f179ef9b98e0825dc4a3d5cdf55a81898ed6"}, - {file = "websockets-14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9dc5a2726fd16c266d35838db086fa4e621bb049e3bbe498ab9d54ad5068f726"}, - {file = "websockets-14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1e541e4c8983b118a584c306070878e7f9670b7781e04184b6e05f9fc92e8a0e"}, - {file = "websockets-14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23b13edb4df2d4e5d6dc747d83e6b244e267a6615ede90f18ef13dfb2b6feb87"}, - {file = "websockets-14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:288365a33049dae3065cdb2c2dd4b48df4b64839c565761c4f3f0c360460a561"}, - {file = "websockets-14.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79e2494047826a56f2951b2ada9dc139d2c3aff63122e86953cafe64ac0fde75"}, - {file = "websockets-14.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5a5b76b47b62de16d26439d362b18d71394ca4376eb2c8838352be64b27ba8af"}, - {file = "websockets-14.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:7ed4111f305770e35070e49fbb9fbf757a9b6c9a31bb86d352eb4031d4aa976f"}, - {file = "websockets-14.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9af48a2f4cc5e2e34cf69969079865100e418c27caa26c1e3369efcc20c81e17"}, - {file = "websockets-14.0-cp310-cp310-win32.whl", hash = "sha256:a97c10043bf74d7667be69383312007d54a507fac8fa101be492cc91e279d94d"}, - {file = "websockets-14.0-cp310-cp310-win_amd64.whl", hash = "sha256:5f86250ee98f6098479936b7d596418b6e4c919dfa156508e9d6ac5f8bfbe764"}, - {file = "websockets-14.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3f1a697262e28682222f18fae70eb0800dfa50c6eb96b0561c6beb83d6cf78ca"}, - {file = "websockets-14.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e0e543e0e81c55e68552bd3c081282721c710a6379a2a78e1ec793853479b25"}, - {file = "websockets-14.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2786c74cbcb0263fd541e4a075aa8c932bdcaa91e5bbb8649c65304799acdd64"}, - {file = "websockets-14.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:176b39547950ff3520728bd1eadd0fa02c68492a1fabca636bab7883dd390905"}, - {file = "websockets-14.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86626d560ceb9d846d128b9c7bd2d0f247dbb62fb49c386762d109583140bf48"}, - {file = "websockets-14.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ca447967131023e98fcb4867f05cf8584adb424b9108180b2414745a6ff41c31"}, - {file = "websockets-14.0-py3-none-any.whl", hash = "sha256:1a3bca8cfb66614e23a65aa5d6b87190876ec6f3247094939f9db877db55319c"}, - {file = "websockets-14.0.tar.gz", hash = "sha256:be90aa6dab180fed523c0c10a6729ad16c9ba79067402d01a4d8aa7ce48d4084"}, + {file = "websockets-14.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0adf84bc2e7c86e8a202537b4fd50e6f7f0e4a6b6bf64d7ccb96c4cd3330b29"}, + {file = "websockets-14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90b5d9dfbb6d07a84ed3e696012610b6da074d97453bd01e0e30744b472c8179"}, + {file = "websockets-14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2177ee3901075167f01c5e335a6685e71b162a54a89a56001f1c3e9e3d2ad250"}, + {file = "websockets-14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f14a96a0034a27f9d47fd9788913924c89612225878f8078bb9d55f859272b0"}, + {file = "websockets-14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f874ba705deea77bcf64a9da42c1f5fc2466d8f14daf410bc7d4ceae0a9fcb0"}, + {file = "websockets-14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9607b9a442392e690a57909c362811184ea429585a71061cd5d3c2b98065c199"}, + {file = "websockets-14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bea45f19b7ca000380fbd4e02552be86343080120d074b87f25593ce1700ad58"}, + {file = "websockets-14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:219c8187b3ceeadbf2afcf0f25a4918d02da7b944d703b97d12fb01510869078"}, + {file = "websockets-14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad2ab2547761d79926effe63de21479dfaf29834c50f98c4bf5b5480b5838434"}, + {file = "websockets-14.1-cp310-cp310-win32.whl", hash = "sha256:1288369a6a84e81b90da5dbed48610cd7e5d60af62df9851ed1d1d23a9069f10"}, + {file = "websockets-14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0744623852f1497d825a49a99bfbec9bea4f3f946df6eb9d8a2f0c37a2fec2e"}, + {file = "websockets-14.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5dc25a9dbd1a7f61eca4b7cb04e74ae4b963d658f9e4f9aad9cd00b688692c8"}, + {file = "websockets-14.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:04a97aca96ca2acedf0d1f332c861c5a4486fdcba7bcef35873820f940c4231e"}, + {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df174ece723b228d3e8734a6f2a6febbd413ddec39b3dc592f5a4aa0aff28098"}, + {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:034feb9f4286476f273b9a245fb15f02c34d9586a5bc936aff108c3ba1b21beb"}, + {file = "websockets-14.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c308dabd2b380807ab64b62985eaccf923a78ebc572bd485375b9ca2b7dc7"}, + {file = "websockets-14.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a42d3ecbb2db5080fc578314439b1d79eef71d323dc661aa616fb492436af5d"}, + {file = "websockets-14.1-py3-none-any.whl", hash = "sha256:4d4fc827a20abe6d544a119896f6b78ee13fe81cbfef416f3f2ddf09a03f0e2e"}, + {file = "websockets-14.1.tar.gz", hash = "sha256:398b10c77d471c0aab20a845e7a60076b6390bfdaac7a6d2edb0d2c59d75e8d8"}, ] [[package]] name = "wheel" -version = "0.45.0" +version = "0.45.1" requires_python = ">=3.8" summary = "A built-package format for Python" groups = ["dev", "doc"] files = [ - {file = "wheel-0.45.0-py3-none-any.whl", hash = "sha256:52f0baa5e6522155090a09c6bd95718cc46956d1b51d537ea5454249edb671c7"}, - {file = "wheel-0.45.0.tar.gz", hash = "sha256:a57353941a3183b3d5365346b567a260a0602a0f8a635926a7dede41b94c674a"}, + {file = "wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248"}, + {file = "wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729"}, ] [[package]] name = "wrapt" -version = "1.16.0" -requires_python = ">=3.6" +version = "1.17.0" +requires_python = ">=3.8" summary = "Module for decorators, wrappers and monkey patching." groups = ["default"] files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, + {file = "wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301"}, + {file = "wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22"}, + {file = "wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575"}, + {file = "wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371"}, + {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 2890ca58..6e1bbf90 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,11 +21,11 @@ dependencies = [ "PyQtWebEngine-Qt5==5.15.2", # # IBL packages - "iblatlas>=0.5.4", - "ibllib>=2.40.1", + "iblatlas>=0.5.5", + "ibllib>=3.1.0", "iblpybpod @ git+https://github.com/int-brain-lab/iblpybpod.git@no-gui", "iblutil>=1.14.0", - "iblqt>=0.2.0", + "iblqt>=0.3.1", "ONE-api>=2.11.1", "tycmd-wrapper>=0.2.1", # From e45c923f3535905469e188843b6b7faa113ea5c2 Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Thu, 5 Dec 2024 16:06:34 +0000 Subject: [PATCH 13/14] Update test_gui.py --- iblrig/test/test_gui.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iblrig/test/test_gui.py b/iblrig/test/test_gui.py index f402cb7b..bc244043 100644 --- a/iblrig/test/test_gui.py +++ b/iblrig/test/test_gui.py @@ -34,7 +34,8 @@ def test_get_task_extra_kwargs(self): but we still round-up and import the custom tasks :return: """ - for task_name in self.wizard.all_tasks: + tasks = {k:v for k,v in self.wizard.all_tasks.items() if v.parents[1].name == 'iblrig_tasks'} + for task_name in tasks: with self.subTest(task_name=task_name): parser = self.wizard.get_task_extra_parser(task_name) extra_args = [{act.option_strings[0]: act.type} for act in parser._actions] From 7c3efd3c01addfd456d63bef19e1d9452478e5af Mon Sep 17 00:00:00 2001 From: Florian Rau Date: Thu, 5 Dec 2024 16:07:19 +0000 Subject: [PATCH 14/14] Update test_gui.py --- iblrig/test/test_gui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iblrig/test/test_gui.py b/iblrig/test/test_gui.py index bc244043..e79cc070 100644 --- a/iblrig/test/test_gui.py +++ b/iblrig/test/test_gui.py @@ -34,7 +34,7 @@ def test_get_task_extra_kwargs(self): but we still round-up and import the custom tasks :return: """ - tasks = {k:v for k,v in self.wizard.all_tasks.items() if v.parents[1].name == 'iblrig_tasks'} + tasks = {k: v for k, v in self.wizard.all_tasks.items() if v.parents[1].name == 'iblrig_tasks'} for task_name in tasks: with self.subTest(task_name=task_name): parser = self.wizard.get_task_extra_parser(task_name)