Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-easydev for openSUSE:Factory 
checked in at 2026-04-11 22:26:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-easydev (Old)
 and      /work/SRC/openSUSE:Factory/.python-easydev.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-easydev"

Sat Apr 11 22:26:33 2026 rev:13 rq:1346061 version:0.14.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-easydev/python-easydev.changes    
2026-01-19 18:41:43.043026257 +0100
+++ /work/SRC/openSUSE:Factory/.python-easydev.new.21863/python-easydev.changes 
2026-04-11 22:31:46.645650058 +0200
@@ -1,0 +2,11 @@
+Thu Apr  2 13:12:09 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 0.14.0
+  * Add Python 3.13 and 3.14 support by @Copilot in (#41)
+  * Fix multicore tests on Python 3.14 by @cjwatson in (#40)
+  * Improve README with installation, feature overview,
+    and quick-start examples by @Copilot in (#42)
+  * Clean up redundant and dead code across easydev modules
+- add fix-version.patch
+
+-------------------------------------------------------------------

Old:
----
  easydev-0.13.3.tar.gz

New:
----
  easydev-0.14.0.tar.gz
  fix-version.patch

----------(New B)----------
  New:  * Clean up redundant and dead code across easydev modules
- add fix-version.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-easydev.spec ++++++
--- /var/tmp/diff_new_pack.uMGrKk/_old  2026-04-11 22:31:47.253674927 +0200
+++ /var/tmp/diff_new_pack.uMGrKk/_new  2026-04-11 22:31:47.253674927 +0200
@@ -16,13 +16,15 @@
 #
 
 
+%{?sle15_python_module_pythons}
 Name:           python-easydev
-Version:        0.13.3
+Version:        0.14.0
 Release:        0
 Summary:        Common utilities to ease the development of Python packages
 License:        BSD-3-Clause
 URL:            https://github.com/cokelaer/easydev
 Source:         
https://github.com/cokelaer/easydev/archive/refs/tags/v%{version}.tar.gz#/easydev-%{version}.tar.gz
+Patch:          
https://github.com/cokelaer/easydev/commit/8cf50c9177936e771e158ea9b249b4aa5e2cc1ee.patch#/fix-version.patch
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module poetry-core}
 BuildRequires:  fdupes

++++++ easydev-0.13.3.tar.gz -> easydev-0.14.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/.github/workflows/main.yml 
new/easydev-0.14.0/.github/workflows/main.yml
--- old/easydev-0.13.3/.github/workflows/main.yml       2025-01-10 
11:29:56.000000000 +0100
+++ new/easydev-0.14.0/.github/workflows/main.yml       2026-03-02 
11:26:22.000000000 +0100
@@ -13,17 +13,21 @@
     strategy:
       max-parallel: 5
       matrix:
-        python: [3.9, '3.10', '3.11', '3.12']
+        python: [3.9, '3.10', '3.11', '3.12', '3.13', '3.14']
       fail-fast: false
 
 
     steps:
-    - uses: actions/checkout@v3
+    - uses: actions/checkout@v4
     - name: Set up Python 3.X
-      uses: actions/setup-python@v2
+      uses: actions/setup-python@v5
       with:
         python-version: ${{ matrix.python }}
 
+    # for py3.14 only (pillow)
+    - name: Install JPEG libraries
+      run: sudo apt-get update && sudo apt-get install -y libjpeg-dev
+
     - name: Install the package itself
       run: |
           pip install poetry
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/README.rst 
new/easydev-0.14.0/README.rst
--- old/easydev-0.13.3/README.rst       2025-01-10 11:29:56.000000000 +0100
+++ new/easydev-0.14.0/README.rst       2026-03-02 11:26:22.000000000 +0100
@@ -7,41 +7,120 @@
 .. image:: 
https://github.com/cokelaer/easydev/actions/workflows/main.yml/badge.svg
     :target: https://github.com/cokelaer/easydev/actions/workflows/main.yml
 
-
 .. image:: https://coveralls.io/repos/cokelaer/easydev/badge.svg?branch=main
    :target: https://coveralls.io/r/cokelaer/easydev?branch=main
 
-
-
+.. image:: 
https://static.pepy.tech/personalized-badge/easydev?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads
+    :target: https://pepy.tech/projects/easydev
 
 :documentation: http://easydev-python.readthedocs.io/en/latest/
 :contributions: Please join https://github.com/cokelaer/easydev
 :source: Please use https://github.com/cokelaer/easydev
 :issues: Please use https://github.com/cokelaer/easydev/issues
-:Python version supported: 3.9, 3.10, 3.11, 3.12
+:Python version supported: 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
+
+Overview
+--------
+
+The `easydev <http://pypi.python.org/pypi/easydev/>`_ package provides
+miscellaneous utility functions and classes that are repeatedly useful during
+the development of Python packages. The goal is to help developers speed up
+their work by providing ready-to-use tools for common tasks such as parameter
+validation, logging, progress bars, configuration files, multiprocessing, and
+more.
+
+It has been used as an incubator for other packages (e.g.,
+`colormap <http://pypi.python.org/pypi/colormap>`_) and is used in projects
+such as `bioservices <https://pypi.python.org/pypi/bioservices>`_,
+`sequana <https://sequana.readthedocs.io>`_, and
+`GDSCTools <https://gdsctools.readthedocs.io>`_.
+
+Installation
+------------
+
+Install the latest release from PyPI::
+
+    pip install easydev
+
+Features
+--------
+
+- **Parameter validation** – ``check_param_in_list``, ``check_range``
+- **Dictionary utilities** – ``swapdict``, ``AttrDict`` (access dict keys as 
attributes, supports nested dicts)
+- **Logging** – coloured logging via ``Logging`` class
+- **Progress bar** – ``Progress`` works in Python, IPython, and Jupyter 
notebooks
+- **Timer** – measure elapsed time with the ``Timer`` context manager
+- **Profiling** – ``do_profile`` decorator using ``line_profiler``
+- **Configuration files** – ``CustomConfig`` and ``DynamicConfigParser`` for 
INI-style config management
+- **Shell commands** – ``shellcmd`` and ``execute`` wrappers around 
subprocess/pexpect
+- **File utilities** – ``touch``, ``mkdirs``, ``md5``
+- **Multiprocessing** – ``MultiProcessing`` class for easy parallel job 
execution
+- **Codecs** – ``to_list``, ``list2string`` and other conversion helpers
+- **URL utilities** – ``isurl_reachable`` and related helpers
+- **Sphinx integration** – bundled Sphinx theme and ``copybutton`` extension
+
+Quick Start
+-----------
+
+Parameter validation::
+
+    from easydev import check_param_in_list, check_range
+
+    check_param_in_list("on", ["on", "off"])   # passes silently
+    check_range(0.5, 0, 1)                     # passes silently
+
+AttrDict – access nested dictionary keys as attributes::
+
+    from easydev import AttrDict
+
+    d = AttrDict(**{"server": {"host": "localhost", "port": 8080}})
+    print(d.server.host)   # localhost
+    d.server.port = 9090
+
+Coloured logging::
+
+    from easydev import Logging
+
+    logger = Logging("myapp", "WARNING")
+    logger.warning("something went wrong")
+    logger.debug("not shown at WARNING level")
+    logger.level = "DEBUG"
+    logger.debug("now it is shown")
+
+Progress bar::
+
+    from easydev import Progress
+
+    pb = Progress(100)
+    for i in range(100):
+        # do work here
+        pb.animate(i + 1)
 
+Timer::
 
-The  `easydev <http://pypi.python.org/pypi/easydev/>`_ package
-provides miscellaneous functions that are repeatidly used during
-the development of Python packages. The goal is to help developers on
-speeding up their own dev. It has been used also as an incubator for other
-packages (e.g., http://pypi.python.org/pypi/colormap) and is stable.
+    from easydev import Timer
+    import time
 
-.. warning:: I'm not pretending to provide universal and bug-free tools. The
-    tools provided may also change. However, **easydev** is used
-    in a few other packages such as
-    `bioservices <https://pypi.python.org/pypi/bioservices>`_,
-    `sequana <https://sequana.readthedocs.io>`_ or
-    `GDSCTools <https://sequana.readthedocs.io>`_ to give a few
-    examples.
+    times = []
+    with Timer(times):
+        time.sleep(0.1)
+    print(f"elapsed: {times[0]:.2f}s")
 
+Multiprocessing::
 
-Note 10/01/2025: Although I tried to keep back-compatibility as much as 
possible, test can be done only on newest version. support for python 3.7 and 
3.8 were droppe because the continuous integration does not support it. 
However,  easydev may still be python3.7 and 3.8 compatible. Have a try.
+    from easydev.multicore import MultiProcessing
 
+    def square(n):
+        return n * n
 
+    t = MultiProcessing(maxcpu=4)
+    for i in range(10):
+        t.add_job(square, i)
+    t.run()
+    print(t.results)
 
 Changelog
-~~~~~~~~~
+---------
 
 ========= 
==========================================================================
 Version   Description
@@ -51,7 +130,7 @@
             https://github.com/cokelaer/easydev/issues/20)
 0.13.1    * fix get_dependencies
 0.13.0    * fix requirements (line_profiler) and CI
-0.12.2    * For developers: move to pyprojet. add precomit
+0.12.2    * For developers: move to pyproject. add precommit
           * replace pkg_resources (deprecated) with importlib
           * replace appdirs with more generic platformdirs
 ========= 
==========================================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/appdirs.py 
new/easydev-0.14.0/easydev/appdirs.py
--- old/easydev-0.13.3/easydev/appdirs.py       2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/appdirs.py       2026-03-02 11:26:22.000000000 
+0100
@@ -1,6 +1,3 @@
-import os
-import sys
-
 from platformdirs import (
     site_config_dir,
     site_data_dir,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/browser.py 
new/easydev-0.14.0/easydev/browser.py
--- old/easydev-0.13.3/easydev/browser.py       2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/browser.py       2026-03-02 11:26:22.000000000 
+0100
@@ -61,11 +61,9 @@
     from easydev import onweb
 
 """
-import argparse
 import os
 import sys
 import webbrowser
-from optparse import OptionParser
 
 
 def browse(url, verbose=True):
@@ -93,23 +91,23 @@
     try:
         os.system("open /Applications/Safari.app {}".format(url))
         return
-    except:
+    except Exception:
         pass
 
     try:
         os.system("open /Applications/Safari.app {}".format("http://"; + url))
         return
-    except:
+    except Exception:
         pass
 
     try:
         webbrowser.open_new(url)
-    except:
+    except Exception:
         if verbose:
             print("Could not open %s. Trying to append http://"; % url)
         try:
             webbrowser.open_new("open http://{}".format(url))
-        except:
+        except Exception:
             print("Could not open http://%s"; % url)
             raise Exception
 
@@ -120,7 +118,7 @@
     try:
         webbrowser.open(url)
         return
-    except:
+    except Exception:
         pass
 
     try:
@@ -128,7 +126,7 @@
             print("Could not open %s" % url)
         webbrowser.open("http://"; + url)
         return
-    except:
+    except Exception:
         pass
 
     raise Exception("Could not open http://{}".format(url))
@@ -172,6 +170,4 @@
 
 
 if __name__ == "__main__":  # pragma: no cover
-    import sys
-
     main(sys.argv)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/chunks.py 
new/easydev-0.14.0/easydev/chunks.py
--- old/easydev-0.13.3/easydev/chunks.py        2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/chunks.py        2026-03-02 11:26:22.000000000 
+0100
@@ -29,12 +29,6 @@
 __all__ = ["split_into_chunks"]
 
 
-try:
-    range = xrange  # py2
-except:
-    pass  # py3
-
-
 def split_into_chunks(items, maxchunks=10):
     """Split a list evenly into N chunks
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/codecs.py 
new/easydev-0.14.0/easydev/codecs.py
--- old/easydev-0.13.3/easydev/codecs.py        2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/codecs.py        2026-03-02 11:26:22.000000000 
+0100
@@ -56,7 +56,7 @@
         try:
             data = data.tolist()
             return data
-        except:
+        except Exception:
             if verbose:
                 print("not known type. Trying to cast into a list")
             return list(data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/config_tools.py 
new/easydev-0.14.0/easydev/config_tools.py
--- old/easydev-0.13.3/easydev/config_tools.py  2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/config_tools.py  2026-03-02 11:26:22.000000000 
+0100
@@ -125,14 +125,14 @@
             self.read(self._filename)
         elif isinstance(config_or_filename, ConfigParser):
             self._replace_config(config_or_filename)
-        elif config_or_filename == None:
+        elif config_or_filename is None:
             pass
         else:
             raise TypeError("config_or_filename must be a valid filename or 
valid ConfigParser instance")
 
     def read(self, filename):
         """Load a new config from a filename (remove all previous sections)"""
-        if os.path.isfile(filename) == False:
+        if not os.path.isfile(filename):
             raise IOError("filename {0} not found".format(filename))
 
         config = ConfigParser()
@@ -220,9 +220,9 @@
                 try:  # numbers
                     try:
                         options[option] = self.getint(section, option)
-                    except:
+                    except Exception:
                         options[option] = self.getfloat(section, option)
-                except:  # string
+                except Exception:  # string
                     options[option] = self.get(section, option, raw=True)
         return options
 
@@ -238,7 +238,7 @@
 
         """
         try:
-            if os.path.exists(filename) == True:
+            if os.path.exists(filename):
                 print("Warning: over-writing %s " % filename)
             fp = open(filename, "w")
         except Exception as err:  # pragma: no cover
@@ -311,7 +311,7 @@
                     if str(self.get(section, option, raw=True)) != 
str(data.get(section, option, raw=True)):
                         print("option %s in section %s differ" % (option, 
section))
                         return False
-                except:  # pragma: no cover
+                except Exception:  # pragma: no cover
                     return False
         return True
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/console.py 
new/easydev-0.14.0/easydev/console.py
--- old/easydev-0.13.3/easydev/console.py       2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/console.py       2026-03-02 11:26:22.000000000 
+0100
@@ -48,7 +48,7 @@
         terminal_width = width
     except (SystemExit, KeyboardInterrupt):  # pragma: no cover
         raise
-    except:
+    except Exception:
         # FALLBACK
         terminal_width = int(os.environ.get("COLUMNS", 80)) - 1
     return terminal_width
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/copybutton.py 
new/easydev-0.14.0/easydev/copybutton.py
--- old/easydev-0.13.3/easydev/copybutton.py    2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/copybutton.py    2026-03-02 11:26:22.000000000 
+0100
@@ -91,7 +91,7 @@
         try:
             packagedir = easydev.__path__[0]
             packagedir = os.path.realpath(pj(packagedir, "..", "share"))
-        except:
+        except Exception:
             raise IOError("could not find data directory")
     return pj(packagedir, "copybutton.js")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/decorators.py 
new/easydev-0.14.0/easydev/decorators.py
--- old/easydev-0.13.3/easydev/decorators.py    2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/decorators.py    2026-03-02 11:26:22.000000000 
+0100
@@ -14,7 +14,6 @@
 #
 ##############################################################################
 """Handy decorators"""
-import threading
 from functools import wraps
 
 __all__ = ["ifpylab", "requires", "ifpandas"]
@@ -100,6 +99,7 @@
     return blocking
 """
 
+
 # same as require decorator but works with list of stirngs of
 # single string and uses the functools utilities
 def requires(requires, msg=""):
@@ -122,7 +122,7 @@
     """
     if isinstance(requires, str):
         requires = [requires]
-    elif isinstance(requires, list) == False:
+    elif not isinstance(requires, list):
         raise TypeError(
             "First argument of the /requires/ decorator must be a"
             + "string or list of string representing the required attributes"
@@ -134,7 +134,7 @@
         @wraps(f)
         def wrapper(*args, **kwds):
             for require in requires:
-                if hasattr(args[0], require) == False:
+                if not hasattr(args[0], require):
                     raise AttributeError("{} not found in {}. 
".format(require, args[0]) + msg)
             return f(*args, **kwds)
 
@@ -157,7 +157,7 @@
         return func(*args, **kwds)
 
     try:
-        import pandas
+        import pandas  # noqa: F401
 
         return wrapper
     except Exception:  # pragma: no cover
@@ -179,7 +179,7 @@
 
     # for methods
     try:
-        import pylab
+        import pylab  # noqa: F401
 
         return wrapper
     except Exception:  # pragma: no cover
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/easytest.py 
new/easydev-0.14.0/easydev/easytest.py
--- old/easydev-0.13.3/easydev/easytest.py      2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/easytest.py      2026-03-02 11:26:22.000000000 
+0100
@@ -71,7 +71,7 @@
         AssertionError
 
     """
-    if possible == True:
+    if possible is True:
         a1 = True
         a2 = False
     else:
@@ -102,7 +102,7 @@
     def delete(self):
         try:
             self.temp._closer.delete = True
-        except:  # pragma: no cover
+        except AttributeError:  # pragma: no cover
             self.temp.delete = True
         self.temp.close()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/logging_tools.py 
new/easydev-0.14.0/easydev/logging_tools.py
--- old/easydev-0.13.3/easydev/logging_tools.py 2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/logging_tools.py 2026-03-02 11:26:22.000000000 
+0100
@@ -59,7 +59,6 @@
     def _set_name(self, name):
         level = self.level
         self._name = name
-        logger = colorlog.getLogger(self._name)
         if level == 0:
             self._set_level("WARNING")
         else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/misc.py 
new/easydev-0.14.0/easydev/misc.py
--- old/easydev-0.13.3/easydev/misc.py  2025-01-10 11:29:56.000000000 +0100
+++ new/easydev-0.14.0/easydev/misc.py  2026-03-02 11:26:22.000000000 +0100
@@ -20,16 +20,10 @@
 
 def get_home():
     """Return path of the HOME"""
-    # This function should be robust
     # First, let us try with expanduser
-    try:
-        homedir = os.path.expanduser("~")
-    except ImportError:  # pragma: no cover
-        # This may happen.
-        pass
-    else:
-        if os.path.isdir(homedir):
-            return homedir
+    homedir = os.path.expanduser("~")
+    if os.path.isdir(homedir):
+        return homedir
     # Then, with getenv
     for this in ("HOME", "USERPROFILE", "TMP"):  # pragma: no cover
         # getenv is same as os.environ.get
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/multicore.py 
new/easydev-0.14.0/easydev/multicore.py
--- old/easydev-0.13.3/easydev/multicore.py     2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/multicore.py     2026-03-02 11:26:22.000000000 
+0100
@@ -19,6 +19,12 @@
 __all__ = ["MultiProcessing"]
 
 
+def _init_worker():
+    import signal
+
+    signal.signal(signal.SIGINT, signal.SIG_IGN)
+
+
 class MultiProcessing(object):
     """Class to run jobs in an asynchronous manner.
 
@@ -53,7 +59,7 @@
 
 
         """
-        if maxcpu == None:
+        if maxcpu is None:
             maxcpu = cpu_count()
 
         self.maxcpu = maxcpu
@@ -102,13 +108,8 @@
             self.pb = Progress(len(self.jobs), 1)
             self.pb.animate(0)
 
-        def init_worker():
-            import signal
-
-            signal.signal(signal.SIGINT, signal.SIG_IGN)
-
         self.results = []
-        self.pool = Pool(self.maxcpu, init_worker)
+        self.pool = Pool(self.maxcpu, _init_worker)
 
         for process in self.jobs:
             self.pool.apply_async(process._target, process._args, 
process._kwargs, callback=self._cb)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/paths.py 
new/easydev-0.14.0/easydev/paths.py
--- old/easydev-0.13.3/easydev/paths.py 2025-01-10 11:29:56.000000000 +0100
+++ new/easydev-0.14.0/easydev/paths.py 2026-03-02 11:26:22.000000000 +0100
@@ -18,7 +18,6 @@
 import importlib
 import os
 from os.path import join as pj
-from pathlib import Path
 
 __all__ = [
     "get_shared_directory_path",
@@ -53,7 +52,7 @@
 
     # print("install  mode ? ")
     sharedir = os.path.realpath(pj(location, package, "share"))
-    if os.path.isdir(sharedir) == True:
+    if os.path.isdir(sharedir):
         # looks like we have found the share directory so it is an install mode
         # print ("yes")
         return sharedir
@@ -63,13 +62,13 @@
         # FIXME: do we need the 3 cases ??
         # probably just 2 are required, one for develop and one for install 
mode
         sharedir = os.path.realpath(pj(location, "..", "share"))
-        if os.path.isdir(sharedir) == True:
+        if os.path.isdir(sharedir):
             return sharedir
         sharedir = os.path.realpath(pj(location, "..", "..", "share"))
-        if os.path.isdir(sharedir) == True:
+        if os.path.isdir(sharedir):
             return sharedir
         sharedir = os.path.realpath(pj(location, "..", "..", "..", "share"))
-        if os.path.isdir(sharedir) == True:
+        if os.path.isdir(sharedir):
             return sharedir
         # could not be found,
         sharedir = []
@@ -117,10 +116,10 @@
     packagedir = get_shared_directory_path(package)
     fullpath = os.path.join(packagedir, datadir)
     # check that it exists
-    if os.path.isdir(fullpath) == False:  # pragma: no cover
+    if not os.path.isdir(fullpath):  # pragma: no cover
         raise ValueError("The directory %s in package %s does not seem to 
exist" % (packagedir, fullpath))
     filename_path = os.path.join(fullpath, filename)
-    if os.path.isfile(filename_path) == False:
+    if not os.path.isfile(filename_path):
         correct_files = [x for x in os.listdir(fullpath) if os.path.isfile(x)]
         msg = "The file %s does not exists. Correct filenames found in %s/%s 
are:\n" % (
             filename_path,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/platform.py 
new/easydev-0.14.0/easydev/platform.py
--- old/easydev-0.13.3/easydev/platform.py      2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/platform.py      2026-03-02 11:26:22.000000000 
+0100
@@ -14,7 +14,6 @@
 #
 ##############################################################################
 
-import os
 import sys
 
 __all__ = ["get_platform"]
@@ -36,24 +35,17 @@
 
     """
     print("//easydev.get_platform() Will be deprecated in future version of 
easydev")
-    try:
-        platform = plf.system()
-        return platform
-    except:
-        # platform is not available under all systems (e.g., WLST tool
-        # see 
http://stackoverflow.com/questions/1854/python-what-os-am-i-running-on
-        # so, let us try sys.platform
-        platform = sys.platform
-        if platform.startswith("linux"):
-            platform = "Linux"
-        elif platform.startswith("java"):
-            platform = "Java"
-        elif platform.startswith("win"):
-            platform = "Windows"
-        elif platform.startswith("darwin"):
-            platform = "Darwin"
-        else:
-            print("platform not parsed. Return raw value of sys.platform.")
+    platform = sys.platform
+    if platform.startswith("linux"):
+        platform = "Linux"
+    elif platform.startswith("java"):
+        platform = "Java"
+    elif platform.startswith("win"):
+        platform = "Windows"
+    elif platform.startswith("darwin"):
+        platform = "Darwin"
+    else:
+        print("platform not parsed. Return raw value of sys.platform.")
     return platform
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/sphinx_themes.py 
new/easydev-0.14.0/easydev/sphinx_themes.py
--- old/easydev-0.13.3/easydev/sphinx_themes.py 2025-01-10 11:29:56.000000000 
+0100
+++ new/easydev-0.14.0/easydev/sphinx_themes.py 2026-03-02 11:26:22.000000000 
+0100
@@ -51,5 +51,5 @@
 
     sharedir = get_shared_directory_path("easydev")
     sharedir = pj(sharedir, "themes")
-    themes = [x for x in os.listdir(sharedir) if x.startswith(".") == False]
+    themes = [x for x in os.listdir(sharedir) if not x.startswith(".")]
     return themes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/tools.py 
new/easydev-0.14.0/easydev/tools.py
--- old/easydev-0.13.3/easydev/tools.py 2025-01-10 11:29:56.000000000 +0100
+++ new/easydev-0.14.0/easydev/tools.py 2026-03-02 11:26:22.000000000 +0100
@@ -161,7 +161,7 @@
         if verbose:
             try:
                 sys.stdout.write(line.decode())
-            except:
+            except Exception:
                 sys.stdout.write(line)
 
             sys.stdout.flush()
@@ -279,12 +279,9 @@
 
         :param dict content: a valid dictionary
         """
-        # accepts dict and attrdict classes
-        try:
-            from collections import OrderedDict
-        except:
-            OrderedDict = AttrDict
+        from collections import OrderedDict
 
+        # accepts dict and attrdict classes
         if content.__class__ not in [dict, OrderedDict, AttrDict]:
             raise TypeError
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/easydev/url.py 
new/easydev-0.14.0/easydev/url.py
--- old/easydev-0.13.3/easydev/url.py   2025-01-10 11:29:56.000000000 +0100
+++ new/easydev-0.14.0/easydev/url.py   2026-03-02 11:26:22.000000000 +0100
@@ -14,10 +14,7 @@
 #
 ##############################################################################
 """Utilities related to the web"""
-try:
-    import httplib
-except ImportError:
-    import http.client as httplib
+import http.client as httplib
 
 __all__ = ["isurl_reachable"]
 
@@ -39,13 +36,13 @@
     conn = httplib.HTTPConnection(url, timeout=timeout)
     try:
         conn.request("HEAD", path)
-    except:
+    except Exception:
         return False
     # 302 is a redirection
     # 200 is okay
     try:
         response = conn.getresponse()
-    except:
+    except Exception:
         return False
 
     if response.status in [200, 302]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/poetry.lock 
new/easydev-0.14.0/poetry.lock
--- old/easydev-0.13.3/poetry.lock      2025-01-10 11:29:56.000000000 +0100
+++ new/easydev-0.14.0/poetry.lock      2026-03-02 11:26:22.000000000 +0100
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 2.0.0 and should not be 
changed by hand.
+# This file is automatically @generated by Poetry 2.0.1 and should not be 
changed by hand.
 
 [[package]]
 name = "alabaster"
@@ -14,134 +14,155 @@
 
 [[package]]
 name = "babel"
-version = "2.16.0"
+version = "2.18.0"
 description = "Internationalization utilities"
 optional = false
 python-versions = ">=3.8"
 groups = ["doc"]
 files = [
-    {file = "babel-2.16.0-py3-none-any.whl", hash = 
"sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"},
-    {file = "babel-2.16.0.tar.gz", hash = 
"sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"},
+    {file = "babel-2.18.0-py3-none-any.whl", hash = 
"sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35"},
+    {file = "babel-2.18.0.tar.gz", hash = 
"sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d"},
 ]
 
 [package.dependencies]
 pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
 
 [package.extras]
-dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", 
"pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"]
 
 [[package]]
 name = "certifi"
-version = "2024.12.14"
+version = "2026.2.25"
 description = "Python package for providing Mozilla's CA Bundle."
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 groups = ["dev", "doc"]
 files = [
-    {file = "certifi-2024.12.14-py3-none-any.whl", hash = 
"sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"},
-    {file = "certifi-2024.12.14.tar.gz", hash = 
"sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"},
+    {file = "certifi-2026.2.25-py3-none-any.whl", hash = 
"sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa"},
+    {file = "certifi-2026.2.25.tar.gz", hash = 
"sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7"},
 ]
 
 [[package]]
 name = "charset-normalizer"
-version = "3.4.1"
+version = "3.4.4"
 description = "The Real First Universal Charset Detector. Open, modern and 
actively maintained alternative to Chardet."
 optional = false
 python-versions = ">=3.7"
 groups = ["dev", "doc"]
 files = [
-    {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", 
hash = 
"sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"},
-    {file = 
"charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
 hash = 
"sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"},
-    {file = 
"charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
 hash = 
"sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"},
-    {file = 
"charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
 hash = 
"sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"},
-    {file = 
"charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"},
-    {file = 
"charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"},
-    {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"},
-    {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", 
hash = 
"sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"},
-    {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"},
-    {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", 
hash = 
"sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"},
-    {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"},
-    {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = 
"sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"},
-    {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = 
"sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", 
hash = 
"sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"},
-    {file = 
"charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
 hash = 
"sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"},
-    {file = 
"charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
 hash = 
"sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"},
-    {file = 
"charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
 hash = 
"sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"},
-    {file = 
"charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"},
-    {file = 
"charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", 
hash = 
"sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", 
hash = 
"sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = 
"sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"},
-    {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = 
"sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"},
-    {file = 
"charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = 
"sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"},
-    {file = 
"charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
 hash = 
"sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"},
-    {file = 
"charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
 hash = 
"sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"},
-    {file = 
"charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
 hash = 
"sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"},
-    {file = 
"charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"},
-    {file = 
"charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"},
-    {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"},
-    {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", 
hash = 
"sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"},
-    {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"},
-    {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", 
hash = 
"sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"},
-    {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"},
-    {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = 
"sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"},
-    {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = 
"sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"},
-    {file = 
"charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = 
"sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"},
-    {file = 
"charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
 hash = 
"sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"},
-    {file = 
"charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
 hash = 
"sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"},
-    {file = 
"charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl",
 hash = 
"sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"},
-    {file = 
"charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"},
-    {file = 
"charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"},
-    {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"},
-    {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", 
hash = 
"sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"},
-    {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"},
-    {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", 
hash = 
"sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"},
-    {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"},
-    {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = 
"sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"},
-    {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = 
"sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"},
-    {file = 
"charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
 hash = 
"sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"},
-    {file = 
"charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
 hash = 
"sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"},
-    {file = 
"charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl",
 hash = 
"sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"},
-    {file = 
"charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"},
-    {file = 
"charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"},
-    {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"},
-    {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash 
= "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"},
-    {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"},
-    {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", 
hash = 
"sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"},
-    {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"},
-    {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = 
"sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"},
-    {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = 
"sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", 
hash = 
"sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"},
-    {file = 
"charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
 hash = 
"sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"},
-    {file = 
"charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
 hash = 
"sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"},
-    {file = 
"charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl",
 hash = 
"sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"},
-    {file = 
"charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"},
-    {file = 
"charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash 
= "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash 
= "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = 
"sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"},
-    {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = 
"sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", 
hash = 
"sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"},
-    {file = 
"charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
 hash = 
"sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"},
-    {file = 
"charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
 hash = 
"sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"},
-    {file = 
"charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
 hash = 
"sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"},
-    {file = 
"charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"},
-    {file = 
"charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash 
= "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash 
= "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = 
"sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"},
-    {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = 
"sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"},
-    {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = 
"sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"},
-    {file = "charset_normalizer-3.4.1.tar.gz", hash = 
"sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", 
hash = 
"sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"},
+    {file = 
"charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"},
+    {file = 
"charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
 hash = 
"sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"},
+    {file = 
"charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
 hash = 
"sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"},
+    {file = 
"charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
 hash = 
"sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"},
+    {file = 
"charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"},
+    {file = 
"charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
 hash = 
"sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", 
hash = 
"sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", 
hash = 
"sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", 
hash = 
"sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = 
"sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = 
"sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"},
+    {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = 
"sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", 
hash = 
"sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"},
+    {file = 
"charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"},
+    {file = 
"charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
 hash = 
"sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"},
+    {file = 
"charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
 hash = 
"sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"},
+    {file = 
"charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
 hash = 
"sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"},
+    {file = 
"charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"},
+    {file = 
"charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
 hash = 
"sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", 
hash = 
"sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", 
hash = 
"sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", 
hash = 
"sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = 
"sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = 
"sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"},
+    {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = 
"sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"},
+    {file = 
"charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = 
"sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"},
+    {file = 
"charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"},
+    {file = 
"charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
 hash = 
"sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"},
+    {file = 
"charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
 hash = 
"sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"},
+    {file = 
"charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
 hash = 
"sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"},
+    {file = 
"charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"},
+    {file = 
"charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
 hash = 
"sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", 
hash = 
"sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", 
hash = 
"sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", 
hash = 
"sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = 
"sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = 
"sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"},
+    {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = 
"sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"},
+    {file = 
"charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = 
"sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"},
+    {file = 
"charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"},
+    {file = 
"charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
 hash = 
"sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"},
+    {file = 
"charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
 hash = 
"sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"},
+    {file = 
"charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
 hash = 
"sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"},
+    {file = 
"charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"},
+    {file = 
"charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
 hash = 
"sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", 
hash = 
"sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", 
hash = 
"sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", 
hash = 
"sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = 
"sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = 
"sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"},
+    {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = 
"sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"},
+    {file = 
"charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = 
"sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"},
+    {file = 
"charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"},
+    {file = 
"charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
 hash = 
"sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"},
+    {file = 
"charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
 hash = 
"sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"},
+    {file = 
"charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
 hash = 
"sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"},
+    {file = 
"charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"},
+    {file = 
"charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
 hash = 
"sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", 
hash = 
"sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", 
hash = 
"sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", 
hash = 
"sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = 
"sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = 
"sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"},
+    {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = 
"sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", 
hash = 
"sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"},
+    {file = 
"charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"},
+    {file = 
"charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
 hash = 
"sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"},
+    {file = 
"charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
 hash = 
"sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"},
+    {file = 
"charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
 hash = 
"sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"},
+    {file = 
"charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"},
+    {file = 
"charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
 hash = 
"sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", 
hash = 
"sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", 
hash = 
"sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash 
= "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = 
"sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"},
+    {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = 
"sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", 
hash = 
"sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"},
+    {file = 
"charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"},
+    {file = 
"charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl",
 hash = 
"sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"},
+    {file = 
"charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl",
 hash = 
"sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"},
+    {file = 
"charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl",
 hash = 
"sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"},
+    {file = 
"charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"},
+    {file = 
"charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl",
 hash = 
"sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", 
hash = 
"sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", 
hash = 
"sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", 
hash = 
"sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", 
hash = 
"sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash 
= "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", 
hash = 
"sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = 
"sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = 
"sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"},
+    {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = 
"sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"},
+    {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = 
"sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"},
+    {file = "charset_normalizer-3.4.4.tar.gz", hash = 
"sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"},
 ]
 
 [[package]]
@@ -158,14 +179,14 @@
 
 [[package]]
 name = "colorlog"
-version = "6.9.0"
+version = "6.10.1"
 description = "Add colours to the output of Python's logging module."
 optional = false
 python-versions = ">=3.6"
 groups = ["main"]
 files = [
-    {file = "colorlog-6.9.0-py3-none-any.whl", hash = 
"sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff"},
-    {file = "colorlog-6.9.0.tar.gz", hash = 
"sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2"},
+    {file = "colorlog-6.10.1-py3-none-any.whl", hash = 
"sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c"},
+    {file = "colorlog-6.10.1.tar.gz", hash = 
"sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321"},
 ]
 
 [package.dependencies]
@@ -285,30 +306,33 @@
 
 [[package]]
 name = "exceptiongroup"
-version = "1.2.2"
+version = "1.3.1"
 description = "Backport of PEP 654 (exception groups)"
 optional = false
 python-versions = ">=3.7"
 groups = ["dev"]
 markers = "python_version < \"3.11\""
 files = [
-    {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = 
"sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"},
-    {file = "exceptiongroup-1.2.2.tar.gz", hash = 
"sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"},
+    {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = 
"sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"},
+    {file = "exceptiongroup-1.3.1.tar.gz", hash = 
"sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"},
 ]
 
+[package.dependencies]
+typing-extensions = {version = ">=4.6.0", markers = "python_version < 
\"3.13\""}
+
 [package.extras]
 test = ["pytest (>=6)"]
 
 [[package]]
 name = "execnet"
-version = "2.1.1"
+version = "2.1.2"
 description = "execnet: rapid multi-Python deployment"
 optional = false
 python-versions = ">=3.8"
 groups = ["dev"]
 files = [
-    {file = "execnet-2.1.1-py3-none-any.whl", hash = 
"sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"},
-    {file = "execnet-2.1.1.tar.gz", hash = 
"sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"},
+    {file = "execnet-2.1.2-py3-none-any.whl", hash = 
"sha256:67fba928dd5a544b783f6056f449e5e3931a5c378b128bc18501f7ea79e296ec"},
+    {file = "execnet-2.1.2.tar.gz", hash = 
"sha256:63d83bfdd9a23e35b9c6a3261412324f964c2ec8dcd8d3c6916ee9373e0befcd"},
 ]
 
 [package.extras]
@@ -328,14 +352,14 @@
 
 [[package]]
 name = "idna"
-version = "3.10"
+version = "3.11"
 description = "Internationalized Domain Names in Applications (IDNA)"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
 groups = ["dev", "doc"]
 files = [
-    {file = "idna-3.10-py3-none-any.whl", hash = 
"sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
-    {file = "idna-3.10.tar.gz", hash = 
"sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
+    {file = "idna-3.11-py3-none-any.whl", hash = 
"sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"},
+    {file = "idna-3.11.tar.gz", hash = 
"sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"},
 ]
 
 [package.extras]
@@ -380,26 +404,26 @@
 
 [[package]]
 name = "iniconfig"
-version = "2.0.0"
+version = "2.1.0"
 description = "brain-dead simple config-ini parsing"
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 groups = ["dev"]
 files = [
-    {file = "iniconfig-2.0.0-py3-none-any.whl", hash = 
"sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
-    {file = "iniconfig-2.0.0.tar.gz", hash = 
"sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
+    {file = "iniconfig-2.1.0-py3-none-any.whl", hash = 
"sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
+    {file = "iniconfig-2.1.0.tar.gz", hash = 
"sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
 ]
 
 [[package]]
 name = "jinja2"
-version = "3.1.5"
+version = "3.1.6"
 description = "A very fast and expressive template engine."
 optional = false
 python-versions = ">=3.7"
 groups = ["doc"]
 files = [
-    {file = "jinja2-3.1.5-py3-none-any.whl", hash = 
"sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"},
-    {file = "jinja2-3.1.5.tar.gz", hash = 
"sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"},
+    {file = "jinja2-3.1.6-py3-none-any.whl", hash = 
"sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
+    {file = "jinja2-3.1.6.tar.gz", hash = 
"sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
 ]
 
 [package.dependencies]
@@ -410,71 +434,89 @@
 
 [[package]]
 name = "line-profiler"
-version = "4.2.0"
+version = "5.0.2"
 description = "Line-by-line profiler"
 optional = false
 python-versions = ">=3.8"
 groups = ["main"]
 files = [
-    {file = "line_profiler-4.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash 
= "sha256:70e2503f52ee6464ac908b578d73ad6dae21d689c95f2252fee97d7aa8426693"},
-    {file = "line_profiler-4.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = 
"sha256:b6047c8748d7a2453522eaea3edc8d9febc658b57f2ea189c03fe3d5e34595b5"},
-    {file = "line_profiler-4.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = 
"sha256:0048360a2afbd92c0b423f8207af1f6581d85c064c0340b0d02c63c8e0c8292c"},
-    {file = 
"line_profiler-4.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", 
hash = 
"sha256:0e71fa1c85f21e3de575c7c617fd4eb607b052cc7b4354035fecc18f3f2a4317"},
-    {file = 
"line_profiler-4.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:c5ec99d48cffdf36efbcd7297e81cc12bf2c0a7e0627a567f3ab0347e607b242"},
-    {file = "line_profiler-4.2.0-cp310-cp310-musllinux_1_2_i686.whl", hash = 
"sha256:bfc9582f19a64283434fc6a3fd41a3a51d59e3cce2dc7adc5fe859fcae67e746"},
-    {file = "line_profiler-4.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = 
"sha256:2b5dcfb3205e18c98c94388065f1604dc9d709df4dd62300ff8c5bbbd9bd163f"},
-    {file = "line_profiler-4.2.0-cp310-cp310-win_amd64.whl", hash = 
"sha256:4999eb1db5d52cb34a5293941986eea4357fb9fe3305a160694e5f13c9ec4008"},
-    {file = "line_profiler-4.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash 
= "sha256:402406f200401a496fb93e1788387bf2d87c921d7f8f7e5f88324ac9efb672ac"},
-    {file = "line_profiler-4.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = 
"sha256:d9a0b5696f1ad42bb31e90706e5d57845833483d1d07f092b66b4799847a2f76"},
-    {file = "line_profiler-4.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = 
"sha256:f2f950fa19f797a9ab55c8d7b33a7cdd95c396cf124c3adbc1cf93a1978d2767"},
-    {file = 
"line_profiler-4.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", 
hash = 
"sha256:7d09fd8f580716da5a0b9a7f544a306b468f38eee28ba2465c56e0aa5d7d1822"},
-    {file = 
"line_profiler-4.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:628f585960c6538873a9760d112db20b76b6035d3eaad7711a8bd80fa909d7ea"},
-    {file = "line_profiler-4.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = 
"sha256:63ed929c7d41e230cc1c4838c25bbee165d7f2fa974ca28d730ea69e501fc44d"},
-    {file = "line_profiler-4.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = 
"sha256:6bda74fc206ba375396068526e9e7b5466a24c7e54cbd6ee1c98c1e0d1f0fd99"},
-    {file = "line_profiler-4.2.0-cp311-cp311-win_amd64.whl", hash = 
"sha256:eaf6eb827c202c07b8b8d82363bb039a6747fbf84ca04279495a91b7da3b773f"},
-    {file = "line_profiler-4.2.0-cp312-cp312-macosx_10_13_universal2.whl", 
hash = 
"sha256:82d29887f1226938a86db30ca3a125b1bde89913768a2a486fa14d0d3f8c0d91"},
-    {file = "line_profiler-4.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = 
"sha256:bf60706467203db0a872b93775a5e5902a02b11d79f8f75a8f8ef381b75789e1"},
-    {file = "line_profiler-4.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = 
"sha256:934fd964eed9bed87e3c01e8871ee6bdc54d10edf7bf14d20e72f7be03567ae3"},
-    {file = 
"line_profiler-4.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", 
hash = 
"sha256:d623e5b37fa48c7ad0c29b4353244346a5dcb1bf75e117e19400b8ffd3393d1b"},
-    {file = 
"line_profiler-4.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:efcdbed9ba9003792d8bfd56c11bb3d4e29ad7e0d2f583e1c774de73bbf02933"},
-    {file = "line_profiler-4.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = 
"sha256:df0149c191a95f2dbc93155b2f9faaee563362d61e78b8986cdb67babe017cdc"},
-    {file = "line_profiler-4.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = 
"sha256:5e3a1ca491a8606ed674882b59354087f6e9ab6b94aa6d5fa5d565c6f2acc7a8"},
-    {file = "line_profiler-4.2.0-cp312-cp312-win_amd64.whl", hash = 
"sha256:a85ff57d4ef9d899ca12d6b0883c3cab1786388b29d2fb5f30f909e70bb9a691"},
-    {file = "line_profiler-4.2.0-cp313-cp313-macosx_10_13_universal2.whl", 
hash = 
"sha256:49db0804e9e330076f0b048d63fd3206331ca0104dd549f61b2466df0f10ecda"},
-    {file = "line_profiler-4.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = 
"sha256:2e983ed4fb2cd68bb8896f6bad7f29ddf9112b978f700448510477bc9fde18db"},
-    {file = "line_profiler-4.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = 
"sha256:d6b27c5880b29369e6bebfe434a16c60cbcd290aa4c384ac612e5777737893f8"},
-    {file = 
"line_profiler-4.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", 
hash = 
"sha256:ae2584dc0af3107efa60bd2ccaa7233dca98e3dff4b11138c0ac30355bc87f1a"},
-    {file = 
"line_profiler-4.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
 hash = 
"sha256:6767d8b922a7368b6917a47c164c3d96d48b82109ad961ef518e78800947cef4"},
-    {file = "line_profiler-4.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = 
"sha256:3137672a769717be4da3a6e006c3bd7b66ad4a341ba89ee749ef96c158a15b22"},
-    {file = "line_profiler-4.2.0-cp313-cp313-win_amd64.whl", hash = 
"sha256:727e970d358616a1a33d51d696efec932a5ef7730785df62658bd7e74aa58951"},
-    {file = "line_profiler-4.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = 
"sha256:8dd674be39b27920aeaaacb12df1f7e789cd60238972bf7caf0f352ce97bb502"},
-    {file = "line_profiler-4.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = 
"sha256:9a0cbb5385021a793acb25bed1bcc1fe3f522092566e4f8dee71e5acde699deb"},
-    {file = "line_profiler-4.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = 
"sha256:e1240667d49d147b1f4b6e966fc9a0223fd58b126f0ee58c8b7a82dfee39ec07"},
-    {file = 
"line_profiler-4.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", 
hash = 
"sha256:d0a52df987b8d3a9b5ffb51f93171d2f4ba82cf8c384256bc8d13cbdbb3d3172"},
-    {file = 
"line_profiler-4.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", 
hash = 
"sha256:a4691399961e64646a1293831da4dcaa5908588a41d845f55ac708f7da600a4f"},
-    {file = "line_profiler-4.2.0-cp38-cp38-musllinux_1_2_i686.whl", hash = 
"sha256:5c030eaf3f44c3dadf4c8d92bc9994afac2ca4d3ae90acd46272910de9f62a89"},
-    {file = "line_profiler-4.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = 
"sha256:91c8078bd7d6c86ca148074bc1583ff4028165153ad8f5f84c6d5ed33d4a150e"},
-    {file = "line_profiler-4.2.0-cp38-cp38-win_amd64.whl", hash = 
"sha256:9f63aa68533710dcdad665e641feff7392609299d54c399599768bcbbd3435eb"},
-    {file = "line_profiler-4.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = 
"sha256:80dd7e7990e346ed8ef32702f8fe3c60abdb0de95980d422c02f1ef30a6a828d"},
-    {file = "line_profiler-4.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = 
"sha256:31e1057448cfdb2678756163135b43bbbf698b2a1f7c88eb807f3fb2cdc2e3e7"},
-    {file = "line_profiler-4.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = 
"sha256:3ea02ccd7dc97b5777c032297991b5637130fbd07fa2c6a1f89f248aa12ef71b"},
-    {file = 
"line_profiler-4.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", 
hash = 
"sha256:4bbbc4e8545f0c187cfed7c323b8cc1121d28001b222b26f6bc3bc554ba82d4f"},
-    {file = 
"line_profiler-4.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", 
hash = 
"sha256:9d76d37c1084210363261d08eaabd30310eefb707ba8ab736a61e43930afaf47"},
-    {file = "line_profiler-4.2.0-cp39-cp39-musllinux_1_2_i686.whl", hash = 
"sha256:22f84c3dbb807a26c115626bee19cb5f93683fa08c8d3836ec30af06fa9eb5c3"},
-    {file = "line_profiler-4.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = 
"sha256:e6131bcd5888371b61e05631555592feba12e73c96596b8d26ffe03cea0fc088"},
-    {file = "line_profiler-4.2.0-cp39-cp39-win_amd64.whl", hash = 
"sha256:fb58aa12cf64f0176d84bc4033bb0701fe8075d5da57149839ef895d961bbdad"},
-    {file = "line_profiler-4.2.0.tar.gz", hash = 
"sha256:09e10f25f876514380b3faee6de93fb0c228abba85820ba1a591ddb3eb451a96"},
+    {file = "line_profiler-5.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash 
= "sha256:1ab5d8de6d3c0381b477cc73dde9c36b6c52ba1928d6daba85ac9e790a3f0086"},
+    {file = "line_profiler-5.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = 
"sha256:b45da5408286b5395ccb707d1cb2b5aeeb8828466cd2f62e8ab2d7cfb0e1b38c"},
+    {file = "line_profiler-5.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = 
"sha256:f6163a43474584db9da495d00869d51a66fdef3962ec3df76f998b1a89308123"},
+    {file = 
"line_profiler-5.0.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:a7759e9e4688ed1be1e674dee599500ba47f2f2c76f903184df615352bc182a8"},
+    {file = 
"line_profiler-5.0.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:e0f8b3b766bde49ca8c1e26b5ff9013358435106d11bc4838764e117d2bcd3ed"},
+    {file = "line_profiler-5.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash 
= "sha256:42d4bef2ce9f2e2cc6b872034ef4bf2e18ec44f3a8a09bdf91232a74abe4074c"},
+    {file = "line_profiler-5.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = 
"sha256:7dd5942d091541803b38ebc4c9d7f375d43b93e41e811f2449a022fd5b24d283"},
+    {file = "line_profiler-5.0.2-cp310-cp310-win_amd64.whl", hash = 
"sha256:c22d1d8ee371e92149b5d9578e78072bcb36435adb62e84bf3bb0c173e14c6f6"},
+    {file = "line_profiler-5.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash 
= "sha256:602370a9bb8d020ea28ddac3bb7fd4331c91d495e6e81d5f75752cbb2f2bb802"},
+    {file = "line_profiler-5.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = 
"sha256:26956eef9668f641c9c6f9adb6b1b236252a73405e238452768812af14f9a145"},
+    {file = "line_profiler-5.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = 
"sha256:64376a726009b7842706a3fef2a6dba051f0bf5a98cbbcafa4c23d6c83bac53c"},
+    {file = 
"line_profiler-5.0.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:68432878d7598916f02be3fbb83e3a4727443cfd96af9cbea05cc1ae9749ed82"},
+    {file = 
"line_profiler-5.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:7956e79526dc4898ca63dd8e3f435ff674b35d7e06457bfff883efae3ecb8359"},
+    {file = "line_profiler-5.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash 
= "sha256:29370b9d239c0e68ea017bbf2b582beed6122a439ef97a8e38228708b52ba595"},
+    {file = "line_profiler-5.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = 
"sha256:f47682cb1cef2a3b3865e59fdaf2f486196476fa508ddcdd838e3484626c2a68"},
+    {file = "line_profiler-5.0.2-cp311-cp311-win_amd64.whl", hash = 
"sha256:b74416342261d0434e2ae0ff074ec0ecf0ea4e66ec2db5a95dd8b0ec7f2b1a8b"},
+    {file = "line_profiler-5.0.2-cp311-cp311-win_arm64.whl", hash = 
"sha256:f0d51ddb054d38a37607b335475c8be9fae4152b01873d1fc1d6b6a317b66398"},
+    {file = "line_profiler-5.0.2-cp312-cp312-macosx_10_13_universal2.whl", 
hash = 
"sha256:256c1d5e84a93254dbe656d0486322190cc68f6b517544edef17a9f00167e680"},
+    {file = "line_profiler-5.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = 
"sha256:892f0cd9967b101ce7528be2d388616037c73cb27830effd7493fa021165c622"},
+    {file = "line_profiler-5.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = 
"sha256:d2d02735843c14337dae3e80d95a732b4657ef759def75162ef97a1aa7466aac"},
+    {file = 
"line_profiler-5.0.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:0d2e166a86dc9c78c349ee18b592b98ebfb9dae615f63fc77cce5f5f751a6ad0"},
+    {file = 
"line_profiler-5.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:5a870b68af1539d718d030f4c4726d35cff4b14ab605147e65222933c5c0e10e"},
+    {file = "line_profiler-5.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash 
= "sha256:fe8cd787caa2a02ca7e138832fa4cab1f198377eaf6e5e8263e8b7506157c454"},
+    {file = "line_profiler-5.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = 
"sha256:70ff915ade9e3ec38ff043ff093b590bbb3055e6fc8b311e0fe14cd78fb2a7f7"},
+    {file = "line_profiler-5.0.2-cp312-cp312-win_amd64.whl", hash = 
"sha256:026779b9dfca0f367174f5d34bcccffce2755db40a4389f0d8a531a2e3ca7cfc"},
+    {file = "line_profiler-5.0.2-cp312-cp312-win_arm64.whl", hash = 
"sha256:fe22b927f05a61a0149976bf0d22d8e56fa742ec89f3d72358db71a1f440c77b"},
+    {file = "line_profiler-5.0.2-cp313-cp313-macosx_10_13_universal2.whl", 
hash = 
"sha256:016effba91d34d15229d41984e921a27f66a7b634f1d7adf6c57c743f3d6a0eb"},
+    {file = "line_profiler-5.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = 
"sha256:506e800dd408a8aafadf39ff4e4a1375ae7794910d00098f191520a2f390cb99"},
+    {file = "line_profiler-5.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = 
"sha256:1e67f77bcb349a663cb22819f65621bcd2a39889524dd890d1d88f8736841b7b"},
+    {file = 
"line_profiler-5.0.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:f6b9d08e85fd48d254ae253e76dc72598e94200ef7002eb1ae0bab4cc9c5e41a"},
+    {file = 
"line_profiler-5.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:31290e06ac25cd87fee46ebe979541d4ec7c8d6f15c5cbe5874a932b1cee95bb"},
+    {file = "line_profiler-5.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash 
= "sha256:1d7fbcc2dbd8534fc6f7d2b440076749b2235cdc525eb177fefafeaf7550373f"},
+    {file = "line_profiler-5.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = 
"sha256:55f04671f48afcd90858c18fbdb2509463c77d717ed5424664f096e902206b6b"},
+    {file = "line_profiler-5.0.2-cp313-cp313-win_amd64.whl", hash = 
"sha256:d2262d4bbbcf72bd430fc5763073792a0f1cb20e64de0f7ecf6e8ae16627d876"},
+    {file = "line_profiler-5.0.2-cp313-cp313-win_arm64.whl", hash = 
"sha256:abf755b020d91b639cbc563015eca381ca64e6bd27ee55ef9004a3a17b6d4dcf"},
+    {file = "line_profiler-5.0.2-cp314-cp314-macosx_10_13_universal2.whl", 
hash = 
"sha256:a1cc30f3f7877fec826d0f40f400ee6c99239dc6a2f587b8d90d06a42d29c8a5"},
+    {file = "line_profiler-5.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = 
"sha256:f90923e1cc4ff8eda1d18e525089fca7bfd6dfe8817ec530a913a2c7444ba0fd"},
+    {file = "line_profiler-5.0.2-cp314-cp314-macosx_11_0_arm64.whl", hash = 
"sha256:cc3d0ecccb14f014d05b32f687d22adcb98bf59fdcc721e7a4330f0372a56f92"},
+    {file = 
"line_profiler-5.0.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:5341f36e532e7ed28e323f5502a29b397b66a6708c6427a77f965148a2e5ddec"},
+    {file = 
"line_profiler-5.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:4cce501f9d996b317b599c0ae99e3eb1bd447874ef8fef1da330b27f3a23eb50"},
+    {file = "line_profiler-5.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash 
= "sha256:b237d82fb792c3db7c80a8675d3c48993d4421b14d96ae602f7fe9ccf1f85903"},
+    {file = "line_profiler-5.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = 
"sha256:74febeca89128a37a32e6500c99665943c0d11e6043f46ce95596d7d1e1732a7"},
+    {file = "line_profiler-5.0.2-cp314-cp314-win_amd64.whl", hash = 
"sha256:d6ce98faff60d9552a30e233648a848682b5d664a7e09e9669163a8f01e28147"},
+    {file = "line_profiler-5.0.2-cp314-cp314-win_arm64.whl", hash = 
"sha256:8be7cc5f4ed9ad87352129d1a494cf5ba7f0fced0472201d83ac9fbfa20f798b"},
+    {file = "line_profiler-5.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = 
"sha256:65ae6b5359b54ff52e88285a256b4c4f0e0a1fc3314f92b4db8966e06aadbc88"},
+    {file = "line_profiler-5.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = 
"sha256:c24ad76daf3e0ff0e461034dfffbe3e30f2e3c18fd8aa60ff74ef4b446b1227d"},
+    {file = "line_profiler-5.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = 
"sha256:9690a3329d4ddd07fb94e5ccd06946f899dfdb15ff83f9c6df481d983d5b91c5"},
+    {file = 
"line_profiler-5.0.2-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:dfd6844f267d5af421d8454f20a3cfb4f8304e7808452c58768eec880a9276bc"},
+    {file = 
"line_profiler-5.0.2-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:860475be8804712c6721ca68acfa7a9b5c70c2c1f5dccd5aa31555ce378b273a"},
+    {file = "line_profiler-5.0.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = 
"sha256:92d855d3c4303848e90c33d65886c0094e89e567c6191177d30706adaaa652f2"},
+    {file = "line_profiler-5.0.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = 
"sha256:3726a94db21d37b2aa6ec2b180e799375c0d8fff772f758846067156e51acfe5"},
+    {file = "line_profiler-5.0.2-cp38-cp38-win_amd64.whl", hash = 
"sha256:1a6698286c5a93b23268c9b640cce088ab1e7da13163af3caa0588220fd8bb5a"},
+    {file = "line_profiler-5.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = 
"sha256:e9d958eef80f6ee1a6ca0c8d0b6eb51d6d028fe0ee416b1778e8f35c47338046"},
+    {file = "line_profiler-5.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = 
"sha256:805e019833291d4fce1c04802ab1c855b9444daa260bd126809019bd74ebb247"},
+    {file = "line_profiler-5.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = 
"sha256:2aa014d0dbd8b7969cd660e16922419dbdff8a78f16a5a459f784a112b1377dc"},
+    {file = 
"line_profiler-5.0.2-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:2895dede79ec527d757b4664c37718c10fa17fcacce9bd5c58160eb3675da405"},
+    {file = 
"line_profiler-5.0.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:d817ccfa338e0e25e0753e4e82764ad153df498d12cbf77cc173eaa5d1861a5c"},
+    {file = "line_profiler-5.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = 
"sha256:d457871d99dcafc0beb9ee3ae5b89a9ea7c44c00de59d0782be6fc569f916890"},
+    {file = "line_profiler-5.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = 
"sha256:aadee364ba01354ddc5c9167c788bd210e9209262ca433121507f8aa6fc5ceed"},
+    {file = "line_profiler-5.0.2-cp39-cp39-win_amd64.whl", hash = 
"sha256:2b70a38fe852d7c95eca105ec603a28ca6f0bd3c909f2cca9e7cca2bf19cb77e"},
+    {file = "line_profiler-5.0.2.tar.gz", hash = 
"sha256:8d8a990c84c64bcde45af22af502d17bc0ae107be405ce41bba92af5c39c0000"},
 ]
 
+[package.dependencies]
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+typing_extensions = "*"
+
 [package.extras]
-all = ["Cython (>=3.0.3)", "IPython (>=7.14.0)", "IPython (>=7.18.0)", 
"IPython (>=8.12.2)", "IPython (>=8.14.0)", "cibuildwheel (>=2.11.2)", 
"cibuildwheel (>=2.11.2)", "cibuildwheel (>=2.11.2)", "cibuildwheel 
(>=2.11.2)", "cibuildwheel (>=2.11.2)", "cibuildwheel (>=2.8.1)", "cmake 
(>=3.21.2)", "coverage[toml] (>=6.1.1)", "coverage[toml] (>=6.5.0)", 
"coverage[toml] (>=6.5.0)", "coverage[toml] (>=6.5.0)", "coverage[toml] 
(>=6.5.0)", "coverage[toml] (>=7.3.0)", "ninja (>=1.10.2)", "pytest (>=6.2.5)", 
"pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", 
"pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest-cov 
(>=3.0.0)", "rich (>=12.3.0)", "scikit-build (>=0.11.1)", "setuptools 
(>=41.0.1)", "setuptools (>=68.2.2)", "ubelt (>=1.3.4)", "xdoctest (>=1.1.3)"]
-all-strict = ["Cython (==3.0.3)", "IPython (==7.14.0)", "IPython (==7.18.0)", 
"IPython (==8.12.2)", "IPython (==8.14.0)", "cibuildwheel (==2.11.2)", 
"cibuildwheel (==2.11.2)", "cibuildwheel (==2.11.2)", "cibuildwheel 
(==2.11.2)", "cibuildwheel (==2.11.2)", "cibuildwheel (==2.8.1)", "cmake 
(==3.21.2)", "coverage[toml] (==6.1.1)", "coverage[toml] (==6.5.0)", 
"coverage[toml] (==6.5.0)", "coverage[toml] (==6.5.0)", "coverage[toml] 
(==6.5.0)", "coverage[toml] (==7.3.0)", "ninja (==1.10.2)", "pytest (==6.2.5)", 
"pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", 
"pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", "pytest-cov 
(==3.0.0)", "rich (==12.3.0)", "scikit-build (==0.11.1)", "setuptools 
(==41.0.1)", "setuptools (==68.2.2)", "ubelt (==1.3.4)", "xdoctest (==1.1.3)"]
-ipython = ["IPython (>=7.14.0)", "IPython (>=7.18.0)", "IPython (>=8.12.2)", 
"IPython (>=8.14.0)"]
-ipython-strict = ["IPython (==7.14.0)", "IPython (==7.18.0)", "IPython 
(==8.12.2)", "IPython (==8.14.0)"]
-optional = ["IPython (>=7.14.0)", "IPython (>=7.18.0)", "IPython (>=8.12.2)", 
"IPython (>=8.14.0)", "rich (>=12.3.0)"]
-optional-strict = ["IPython (==7.14.0)", "IPython (==7.18.0)", "IPython 
(==8.12.2)", "IPython (==8.14.0)", "rich (==12.3.0)"]
-tests = ["coverage[toml] (>=6.1.1)", "coverage[toml] (>=6.5.0)", 
"coverage[toml] (>=6.5.0)", "coverage[toml] (>=6.5.0)", "coverage[toml] 
(>=6.5.0)", "coverage[toml] (>=7.3.0)", "pytest (>=6.2.5)", "pytest (>=7.4.4)", 
"pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", 
"pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest-cov (>=3.0.0)", "ubelt 
(>=1.3.4)", "xdoctest (>=1.1.3)"]
-tests-strict = ["coverage[toml] (==6.1.1)", "coverage[toml] (==6.5.0)", 
"coverage[toml] (==6.5.0)", "coverage[toml] (==6.5.0)", "coverage[toml] 
(==6.5.0)", "coverage[toml] (==7.3.0)", "pytest (==6.2.5)", "pytest (==7.4.4)", 
"pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", 
"pytest (==7.4.4)", "pytest (==7.4.4)", "pytest-cov (==3.0.0)", "ubelt 
(==1.3.4)", "xdoctest (==1.1.3)"]
+all = ["Cython (>=3.0.3)", "IPython (>=8.12.2)", "IPython (>=8.14.0)", 
"cibuildwheel (>=2.19.2)", "cibuildwheel (>=2.19.2)", "cibuildwheel (>=3.1.2)", 
"cibuildwheel (>=3.1.2)", "cmake (>=3.21.2)", "coverage[toml] (>=6.5.0)", 
"coverage[toml] (>=6.5.0)", "coverage[toml] (>=6.5.0)", "coverage[toml] 
(>=7.3.0)", "ninja (>=1.10.2)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest 
(>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", 
"pytest-cov (>=3.0.0)", "rich (>=12.3.0)", "scikit-build (>=0.11.1)", 
"setuptools (>=68.2.2)", "tomli", "typing_extensions", "ubelt (>=1.3.4)", 
"xdoctest (>=1.1.3)"]
+all-strict = ["Cython (==3.0.3)", "IPython (==8.12.2)", "IPython (==8.14.0)", 
"cibuildwheel (==2.19.2)", "cibuildwheel (==2.19.2)", "cibuildwheel (==3.1.2)", 
"cibuildwheel (==3.1.2)", "cmake (==3.21.2)", "coverage[toml] (==6.5.0)", 
"coverage[toml] (==6.5.0)", "coverage[toml] (==6.5.0)", "coverage[toml] 
(==7.3.0)", "ninja (==1.10.2)", "pytest (==7.4.4)", "pytest (==7.4.4)", "pytest 
(==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", 
"pytest-cov (==3.0.0)", "rich (==12.3.0)", "scikit-build (==0.11.1)", 
"setuptools (==68.2.2)", "tomli", "typing_extensions", "ubelt (==1.3.4)", 
"xdoctest (==1.1.3)"]
+ipython = ["IPython (>=8.12.2)", "IPython (>=8.14.0)"]
+ipython-strict = ["IPython (==8.12.2)", "IPython (==8.14.0)"]
+optional = ["IPython (>=8.12.2)", "IPython (>=8.14.0)", "rich (>=12.3.0)"]
+optional-strict = ["IPython (==8.12.2)", "IPython (==8.14.0)", "rich 
(==12.3.0)"]
+runtime-strict = ["tomli", "typing_extensions"]
+tests = ["coverage[toml] (>=6.5.0)", "coverage[toml] (>=6.5.0)", 
"coverage[toml] (>=6.5.0)", "coverage[toml] (>=7.3.0)", "pytest (>=7.4.4)", 
"pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", "pytest (>=7.4.4)", 
"pytest (>=7.4.4)", "pytest-cov (>=3.0.0)", "ubelt (>=1.3.4)", "xdoctest 
(>=1.1.3)"]
+tests-strict = ["coverage[toml] (==6.5.0)", "coverage[toml] (==6.5.0)", 
"coverage[toml] (==6.5.0)", "coverage[toml] (==7.3.0)", "pytest (==7.4.4)", 
"pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", "pytest (==7.4.4)", 
"pytest (==7.4.4)", "pytest-cov (==3.0.0)", "ubelt (==1.3.4)", "xdoctest 
(==1.1.3)"]
 
 [[package]]
 name = "markupsafe"
@@ -548,14 +590,14 @@
 
 [[package]]
 name = "packaging"
-version = "24.2"
+version = "26.0"
 description = "Core utilities for Python packages"
 optional = false
 python-versions = ">=3.8"
 groups = ["dev", "doc"]
 files = [
-    {file = "packaging-24.2-py3-none-any.whl", hash = 
"sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
-    {file = "packaging-24.2.tar.gz", hash = 
"sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
+    {file = "packaging-26.0-py3-none-any.whl", hash = 
"sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"},
+    {file = "packaging-26.0.tar.gz", hash = 
"sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"},
 ]
 
 [[package]]
@@ -718,14 +760,14 @@
 
 [[package]]
 name = "pygments"
-version = "2.19.1"
+version = "2.19.2"
 description = "Pygments is a syntax highlighting package written in Python."
 optional = false
 python-versions = ">=3.8"
 groups = ["doc"]
 files = [
-    {file = "pygments-2.19.1-py3-none-any.whl", hash = 
"sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"},
-    {file = "pygments-2.19.1.tar.gz", hash = 
"sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"},
+    {file = "pygments-2.19.2-py3-none-any.whl", hash = 
"sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"},
+    {file = "pygments-2.19.2.tar.gz", hash = 
"sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"},
 ]
 
 [package.extras]
@@ -775,14 +817,14 @@
 
 [[package]]
 name = "pytest-mock"
-version = "3.14.0"
+version = "3.14.1"
 description = "Thin-wrapper around the mock package for easier use with pytest"
 optional = false
 python-versions = ">=3.8"
 groups = ["dev"]
 files = [
-    {file = "pytest-mock-3.14.0.tar.gz", hash = 
"sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"},
-    {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = 
"sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"},
+    {file = "pytest_mock-3.14.1-py3-none-any.whl", hash = 
"sha256:178aefcd11307d874b4cd3100344e7e2d888d9791a6a1d9bfe90fbc1b74fd1d0"},
+    {file = "pytest_mock-3.14.1.tar.gz", hash = 
"sha256:159e9edac4c451ce77a5cdb9fc5d1100708d2dd4ba3c3df572f14097351af80e"},
 ]
 
 [package.dependencies]
@@ -809,14 +851,14 @@
 
 [[package]]
 name = "pytest-timeout"
-version = "2.3.1"
+version = "2.4.0"
 description = "pytest plugin to abort hanging tests"
 optional = false
 python-versions = ">=3.7"
 groups = ["dev"]
 files = [
-    {file = "pytest-timeout-2.3.1.tar.gz", hash = 
"sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"},
-    {file = "pytest_timeout-2.3.1-py3-none-any.whl", hash = 
"sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e"},
+    {file = "pytest_timeout-2.4.0-py3-none-any.whl", hash = 
"sha256:c42667e5cdadb151aeb5b26d114aff6bdf5a907f176a007a30b940d3d865b5c2"},
+    {file = "pytest_timeout-2.4.0.tar.gz", hash = 
"sha256:7e68e90b01f9eff71332b25001f85c75495fc4e3a836701876183c4bcfd0540a"},
 ]
 
 [package.dependencies]
@@ -845,32 +887,32 @@
 
 [[package]]
 name = "pytz"
-version = "2024.2"
+version = "2025.2"
 description = "World timezone definitions, modern and historical"
 optional = false
 python-versions = "*"
 groups = ["doc"]
 markers = "python_version < \"3.9\""
 files = [
-    {file = "pytz-2024.2-py2.py3-none-any.whl", hash = 
"sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"},
-    {file = "pytz-2024.2.tar.gz", hash = 
"sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"},
+    {file = "pytz-2025.2-py2.py3-none-any.whl", hash = 
"sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"},
+    {file = "pytz-2025.2.tar.gz", hash = 
"sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"},
 ]
 
 [[package]]
 name = "requests"
-version = "2.32.3"
+version = "2.32.4"
 description = "Python HTTP for Humans."
 optional = false
 python-versions = ">=3.8"
 groups = ["dev", "doc"]
 files = [
-    {file = "requests-2.32.3-py3-none-any.whl", hash = 
"sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
-    {file = "requests-2.32.3.tar.gz", hash = 
"sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
+    {file = "requests-2.32.4-py3-none-any.whl", hash = 
"sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"},
+    {file = "requests-2.32.4.tar.gz", hash = 
"sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"},
 ]
 
 [package.dependencies]
 certifi = ">=2017.4.17"
-charset-normalizer = ">=2,<4"
+charset_normalizer = ">=2,<4"
 idna = ">=2.5,<4"
 urllib3 = ">=1.21.1,<3"
 
@@ -880,14 +922,14 @@
 
 [[package]]
 name = "snowballstemmer"
-version = "2.2.0"
-description = "This package provides 29 stemmers for 28 languages generated 
from Snowball algorithms."
+version = "3.0.1"
+description = "This package provides 32 stemmers for 30 languages generated 
from Snowball algorithms."
 optional = false
-python-versions = "*"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*"
 groups = ["doc"]
 files = [
-    {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = 
"sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
-    {file = "snowballstemmer-2.2.0.tar.gz", hash = 
"sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
+    {file = "snowballstemmer-3.0.1-py3-none-any.whl", hash = 
"sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064"},
+    {file = "snowballstemmer-3.0.1.tar.gz", hash = 
"sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895"},
 ]
 
 [[package]]
@@ -1080,46 +1122,74 @@
 
 [[package]]
 name = "tomli"
-version = "2.2.1"
+version = "2.4.0"
 description = "A lil' TOML parser"
 optional = false
 python-versions = ">=3.8"
-groups = ["dev"]
-markers = "python_full_version <= \"3.11.0a6\""
+groups = ["main", "dev"]
+files = [
+    {file = "tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = 
"sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867"},
+    {file = "tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = 
"sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9"},
+    {file = 
"tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95"},
+    {file = 
"tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76"},
+    {file = "tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = 
"sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d"},
+    {file = "tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = 
"sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576"},
+    {file = "tomli-2.4.0-cp311-cp311-win32.whl", hash = 
"sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a"},
+    {file = "tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = 
"sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa"},
+    {file = "tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = 
"sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614"},
+    {file = "tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = 
"sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1"},
+    {file = "tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = 
"sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8"},
+    {file = 
"tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a"},
+    {file = 
"tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1"},
+    {file = "tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = 
"sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b"},
+    {file = "tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = 
"sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51"},
+    {file = "tomli-2.4.0-cp312-cp312-win32.whl", hash = 
"sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729"},
+    {file = "tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = 
"sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da"},
+    {file = "tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = 
"sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3"},
+    {file = "tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = 
"sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0"},
+    {file = "tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = 
"sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e"},
+    {file = 
"tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4"},
+    {file = 
"tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e"},
+    {file = "tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = 
"sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c"},
+    {file = "tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = 
"sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f"},
+    {file = "tomli-2.4.0-cp313-cp313-win32.whl", hash = 
"sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86"},
+    {file = "tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = 
"sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87"},
+    {file = "tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = 
"sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132"},
+    {file = "tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = 
"sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6"},
+    {file = "tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = 
"sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc"},
+    {file = 
"tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66"},
+    {file = 
"tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d"},
+    {file = "tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = 
"sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702"},
+    {file = "tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = 
"sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8"},
+    {file = "tomli-2.4.0-cp314-cp314-win32.whl", hash = 
"sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776"},
+    {file = "tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = 
"sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475"},
+    {file = "tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = 
"sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2"},
+    {file = "tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = 
"sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9"},
+    {file = "tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = 
"sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0"},
+    {file = 
"tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
 hash = 
"sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df"},
+    {file = 
"tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
 hash = 
"sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d"},
+    {file = "tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = 
"sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f"},
+    {file = "tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = 
"sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b"},
+    {file = "tomli-2.4.0-cp314-cp314t-win32.whl", hash = 
"sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087"},
+    {file = "tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = 
"sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd"},
+    {file = "tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = 
"sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4"},
+    {file = "tomli-2.4.0-py3-none-any.whl", hash = 
"sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a"},
+    {file = "tomli-2.4.0.tar.gz", hash = 
"sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c"},
+]
+markers = {main = "python_version < \"3.11\"", dev = "python_full_version <= 
\"3.11.0a6\""}
+
+[[package]]
+name = "typing-extensions"
+version = "4.13.2"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+groups = ["main", "dev"]
 files = [
-    {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = 
"sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"},
-    {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = 
"sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"},
-    {file = 
"tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", 
hash = 
"sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"},
-    {file = 
"tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash 
= "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"},
-    {file = 
"tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"},
-    {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = 
"sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"},
-    {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = 
"sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"},
-    {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = 
"sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"},
-    {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = 
"sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"},
-    {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = 
"sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"},
-    {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = 
"sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"},
-    {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = 
"sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"},
-    {file = 
"tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", 
hash = 
"sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"},
-    {file = 
"tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash 
= "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"},
-    {file = 
"tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"},
-    {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = 
"sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"},
-    {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = 
"sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"},
-    {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = 
"sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"},
-    {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = 
"sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"},
-    {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = 
"sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"},
-    {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = 
"sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"},
-    {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = 
"sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"},
-    {file = 
"tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", 
hash = 
"sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"},
-    {file = 
"tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash 
= "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"},
-    {file = 
"tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
 hash = 
"sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"},
-    {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = 
"sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"},
-    {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = 
"sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"},
-    {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = 
"sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"},
-    {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = 
"sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"},
-    {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = 
"sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"},
-    {file = "tomli-2.2.1-py3-none-any.whl", hash = 
"sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"},
-    {file = "tomli-2.2.1.tar.gz", hash = 
"sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"},
+    {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = 
"sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"},
+    {file = "typing_extensions-4.13.2.tar.gz", hash = 
"sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"},
 ]
+markers = {dev = "python_version < \"3.11\""}
 
 [[package]]
 name = "urllib3"
@@ -1163,4 +1233,4 @@
 [metadata]
 lock-version = "2.1"
 python-versions = "^3.8"
-content-hash = 
"abe67654123427cb73f94fdf83e2c8d96c58c892dee6908100e28d218188fb8e"
+content-hash = 
"257125582c2fca9ea0a3a87afcdcc7b2c606d3404acd4e0d1e3b7be9d9f2a7cb"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/easydev-0.13.3/pyproject.toml 
new/easydev-0.14.0/pyproject.toml
--- old/easydev-0.13.3/pyproject.toml   2025-01-10 11:29:56.000000000 +0100
+++ new/easydev-0.14.0/pyproject.toml   2026-03-02 11:26:22.000000000 +0100
@@ -21,10 +21,12 @@
         "Intended Audience :: Science/Research",
         "License :: OSI Approved :: BSD License",
         "Operating System :: POSIX :: Linux",
-        "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
         "Programming Language :: Python :: 3.11",
+        "Programming Language :: Python :: 3.12",
+        "Programming Language :: Python :: 3.13",
+        "Programming Language :: Python :: 3.14",
         "Topic :: Software Development :: Libraries :: Python Modules",
         "Topic :: Scientific/Engineering :: Bio-Informatics",
         "Topic :: Scientific/Engineering :: Information Analysis",
@@ -51,7 +53,7 @@
 colorlog = "^6.8.2"
 pexpect = "^4.9.0"
 platformdirs = "^4.2.0"
-line-profiler = "^4.1.2"
+line-profiler = "^5.0.0"
 
 
 

++++++ fix-version.patch ++++++
>From 8cf50c9177936e771e158ea9b249b4aa5e2cc1ee Mon Sep 17 00:00:00 2001
From: Thomas Cokelaer <[email protected]>
Date: Mon, 2 Mar 2026 12:37:46 +0100
Subject: [PATCH] set version to 0.14.0

---
 pyproject.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pyproject.toml b/pyproject.toml
index b67fa0d..815c3b3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
 
 [project]
 name = "easydev"
-version = "0.13.3"
+version = "0.14.0"
 description = "Common utilities to ease development of Python packages"
 authors = [
     { "name" = "Thomas Cokelaer", "email" = "[email protected]" },

Reply via email to