diff --git a/.github/workflows/documentation-build.yml b/.github/workflows/documentation-build.yml
index fd58996f..f85695bc 100644
--- a/.github/workflows/documentation-build.yml
+++ b/.github/workflows/documentation-build.yml
@@ -35,15 +35,9 @@ jobs:
- name: Build documentation
run: pixi run --environment dev docs-build
-
- # - name: Build and Commit
- # uses: sphinx-notes/pages@master
- # with:
- # install_requirements: true
- # documentation_path: docs/src
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./docs/_build/html
+ publish_dir: ./site
diff --git a/Examples/base/README.md b/Examples/base/README.md
new file mode 100644
index 00000000..3a98f70e
--- /dev/null
+++ b/Examples/base/README.md
@@ -0,0 +1,3 @@
+# Subclassing Examples
+
+This section gathers examples which correspond to subclassing the `easyscience.base_classes.ObjBase` class.
diff --git a/Examples/base/README.rst b/Examples/base/README.rst
deleted file mode 100644
index 46da573a..00000000
--- a/Examples/base/README.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-.. _base_examples:
-
-Subclassing Examples
-------------------------
-
-This section gathers examples which correspond to subclassing the :class:`easyscience.base_classes.ObjBase` class.
diff --git a/Examples/base/plot_baseclass1.py b/Examples/base/plot_baseclass1.py
index b87c559e..baa511ee 100644
--- a/Examples/base/plot_baseclass1.py
+++ b/Examples/base/plot_baseclass1.py
@@ -1,14 +1,14 @@
"""
-Subclassing ObjBase - Simple Pendulum
-=====================================
-This example shows how to subclass :class:`easyscience.base_classes.ObjBase` with parameters from
-:class:`EasyScience.variable.Parameter`. For this example a simple pendulum will be modeled.
+# Subclassing ObjBase - Simple Pendulum
-.. math::
+This example shows how to subclass `easyscience.base_classes.ObjBase` with parameters from
+`EasyScience.variable.Parameter`. For this example a simple pendulum will be modeled.
+
+$$
y = A \sin (2 \pi f t + \phi )
+$$
-Imports
-*******
+## Imports
Firstly the necessary imports. Notice that we import numpy from easyscience. This is not done for any reason other than
saving time from multiple imports.
@@ -21,8 +21,8 @@
from easyscience.variable import Parameter
# %%
-# Subclassing
-# ***********
+# ## Subclassing
+#
# To include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your
# rST and your code. This separates your example
# into distinct text and code blocks. You can continue writing code below the
@@ -53,8 +53,8 @@ def plot(self, time, axis=None, **kwargs):
# %%
-# Single Example
-# **************
+# ## Single Example
+#
# To include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your
# rST and your code. This separates your example
# into distinct text and code blocks. You can continue writing code below the
@@ -82,8 +82,8 @@ def plot(self, time, axis=None, **kwargs):
fig.show()
# %%
-# Multiple Examples
-# *****************
+# ## Multiple Examples
+#
# To include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your
# rST and your code. This separates your example
# into distinct text and code blocks. You can continue writing code below the
diff --git a/Examples/fitting/README.rst b/Examples/fitting/README.md
similarity index 66%
rename from Examples/fitting/README.rst
rename to Examples/fitting/README.md
index 614960cb..ffea967e 100644
--- a/Examples/fitting/README.rst
+++ b/Examples/fitting/README.md
@@ -1,6 +1,3 @@
-.. _fitting_examples:
-
-Fitting Examples
-----------------
+# Fitting Examples
This section gathers examples which demonstrate fitting functionality using EasyScience's fitting capabilities.
diff --git a/Examples/fitting/plot_fitting1.py b/Examples/fitting/plot_fitting1.py
new file mode 100644
index 00000000..9e2afc5a
--- /dev/null
+++ b/Examples/fitting/plot_fitting1.py
@@ -0,0 +1,80 @@
+"""
+# Simple Fitting Example
+
+This example demonstrates a simple fitting procedure using `easyscience.fitting.Fitter`.
+"""
+
+import numpy as np
+import matplotlib.pyplot as plt
+
+from easyscience.fitting import Fitter
+from easyscience.base_classes import ObjBase
+from easyscience.variable import Parameter
+
+# %%
+# ## Define the Model
+#
+# We define a simple linear model with parameters `m` (slope) and `c` (intercept).
+
+
+class Line(ObjBase):
+ def __init__(self, m: Parameter, c: Parameter):
+ super().__init__('line', m=m, c=c)
+
+ def __call__(self, x):
+ return self.c.value + self.m.value * x
+
+
+# Initialize parameters
+m = Parameter('m', 1)
+c = Parameter('c', 1)
+b = Line(m, c)
+
+# %%
+# ## Define the Fitting Function
+#
+# The fitting function takes the independent variable `x` and returns the model prediction.
+
+
+def fit_fun(x):
+ return b(x)
+
+
+# %%
+# ## Setup the Fitter
+#
+# Initialize the Fitter with the model object and the fitting function.
+
+f = Fitter(b, fit_fun)
+
+# %%
+# ## Generate Data
+#
+# Create some synthetic data to fit.
+
+x = np.array([1, 2, 3])
+y = np.array([2, 4, 6]) - 1
+# x=1, y=1. x=2, y=3. x=3, y=5.
+# Expected result: m=2, c=-1.
+
+# %%
+# ## Perform Fit
+#
+# Run the fit.
+
+# We need to provide weights for the fit. Since we don't have experimental errors, we use equal weights.
+weights = np.ones_like(x)
+f_res = f.fit(x, y, weights=weights)
+
+print(f'Goodness of fit (chi2): {f_res.chi2}')
+print(f'Reduced chi2: {f_res.reduced_chi}')
+print(f'Fitted m: {b.m.value}')
+print(f'Fitted c: {b.c.value}')
+
+# %%
+# ## Plot Results
+
+plt.scatter(x, y, label='Data')
+plt.plot(x, fit_fun(x), label='Fit', color='red')
+plt.legend()
+plt.show()
diff --git a/docs/Makefile b/docs/Makefile
deleted file mode 100644
index 1a27587e..00000000
--- a/docs/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Minimal makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-SPHINXPROJ = EasyScience
-SOURCEDIR = ./src
-BUILDDIR = _build
-
-# Put it first so that "make" without argument is like "make help".
-help:
- @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
-.PHONY: help Makefile
-
-# Catch-all target: route all unknown targets to Sphinx using the new
-# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile
- @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/docs/assets/logo_light.svg b/docs/assets/logo_light.svg
new file mode 100644
index 00000000..89b48f9f
--- /dev/null
+++ b/docs/assets/logo_light.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Logo
+
+ Main circle
+
+
+ Inner circles
+
+
+
+
+
+
+
+ Text
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/base_examples/index.md b/docs/base_examples/index.md
new file mode 100644
index 00000000..a5193a77
--- /dev/null
+++ b/docs/base_examples/index.md
@@ -0,0 +1,33 @@
+# Subclassing Examples
+
+This section gathers examples which correspond to subclassing the `easyscience.base_classes.ObjBase` class.
+
+
+
+
+
+
+
+
+
+
+
+
+[:fontawesome-solid-download: Download all examples in Python source code: base_examples_python.zip](./base_examples_python.zip){ .md-button .center}
+
+[:fontawesome-solid-download: Download all examples in Jupyter notebooks: base_examples_jupyter.zip](./base_examples_jupyter.zip){ .md-button .center}
+
+
+[Gallery generated by mkdocs-gallery](https://smarie.github.io/mkdocs-gallery){: .mkd-glr-signature }
diff --git a/docs/base_examples/plot_baseclass1.ipynb b/docs/base_examples/plot_baseclass1.ipynb
new file mode 100644
index 00000000..6fcc79aa
--- /dev/null
+++ b/docs/base_examples/plot_baseclass1.ipynb
@@ -0,0 +1,126 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n# Subclassing ObjBase - Simple Pendulum\n\nThis example shows how to subclass `easyscience.base_classes.ObjBase` with parameters from\n`EasyScience.variable.Parameter`. For this example a simple pendulum will be modeled.\n\n$$\n y = A \\sin (2 \\pi f t + \\phi )\n$$\n\n## Imports\n\nFirstly the necessary imports. Notice that we import numpy from easyscience. This is not done for any reason other than\nsaving time from multiple imports.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\nimport numpy as np\n\nfrom easyscience.base_classes import ObjBase\nfrom easyscience.variable import Parameter"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Subclassing\n\nTo include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your\nrST and your code. This separates your example\ninto distinct text and code blocks. You can continue writing code below the\nembedded rST text block:\n\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "class Pendulum(ObjBase):\n def __init__(self, A: Parameter, f: Parameter, p: Parameter):\n super(Pendulum, self).__init__('SimplePendulum', A=A, f=f, p=p)\n\n @classmethod\n def from_pars(cls, A: float = 1, f: float = 1, p: float = 0):\n A = Parameter('Amplitude', A)\n f = Parameter('Frequency', f)\n p = Parameter('Phase', p)\n return cls(A, f, p)\n\n def __call__(self, t):\n return self.A.value * np.sin(2 * np.pi * self.f.value * t + self.p.value)\n\n def plot(self, time, axis=None, **kwargs):\n if axis is None:\n axis = plt\n else:\n axis.set_title(f'A={self.A.value}, F={self.f.value}, P={self.p.value}')\n p = axis.plot(time, self(time), **kwargs)\n return p"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Single Example\n\nTo include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your\nrST and your code. This separates your example\ninto distinct text and code blocks. You can continue writing code below the\nembedded rST text block:\n\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "p1 = Pendulum.from_pars()\n# Another pendulum with Amplitude = 5\np2 = Pendulum.from_pars(A=5)\n# Another pendulum with Frequency = 4\np3 = Pendulum.from_pars(A=5, f=4)\n# Another pendulum with Phase = pi/2\np4 = Pendulum.from_pars(A=5, f=4, p=np.pi / 2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Plotting\n\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "t = np.linspace(0, 3, 601)\nfig = plt.figure()\ngs = fig.add_gridspec(2, 2)\n(ax1, ax2), (ax3, ax4) = gs.subplots(sharex='col', sharey='row')\np1.plot(t, axis=ax1)\np2.plot(t, axis=ax2)\np3.plot(t, axis=ax3)\np4.plot(t, axis=ax4)\nfig.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Multiple Examples\n\nTo include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your\nrST and your code. This separates your example\ninto distinct text and code blocks. You can continue writing code below the\nembedded rST text block:\n\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "pendulum_array = [Pendulum.from_pars(p=phase) for phase in np.linspace(0, 1, 3)]\nfig = plt.figure()\nfor pendulum in pendulum_array:\n pendulum.plot(t, label=f'Phase = {pendulum.p}')\nplt.legend(loc='lower right')\nfig.show()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/docs/base_examples/plot_baseclass1.py b/docs/base_examples/plot_baseclass1.py
new file mode 100644
index 00000000..baa511ee
--- /dev/null
+++ b/docs/base_examples/plot_baseclass1.py
@@ -0,0 +1,97 @@
+"""
+# Subclassing ObjBase - Simple Pendulum
+
+This example shows how to subclass `easyscience.base_classes.ObjBase` with parameters from
+`EasyScience.variable.Parameter`. For this example a simple pendulum will be modeled.
+
+$$
+ y = A \sin (2 \pi f t + \phi )
+$$
+
+## Imports
+
+Firstly the necessary imports. Notice that we import numpy from easyscience. This is not done for any reason other than
+saving time from multiple imports.
+"""
+
+import matplotlib.pyplot as plt
+import numpy as np
+
+from easyscience.base_classes import ObjBase
+from easyscience.variable import Parameter
+
+# %%
+# ## Subclassing
+#
+# To include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your
+# rST and your code. This separates your example
+# into distinct text and code blocks. You can continue writing code below the
+# embedded rST text block:
+
+
+class Pendulum(ObjBase):
+ def __init__(self, A: Parameter, f: Parameter, p: Parameter):
+ super(Pendulum, self).__init__('SimplePendulum', A=A, f=f, p=p)
+
+ @classmethod
+ def from_pars(cls, A: float = 1, f: float = 1, p: float = 0):
+ A = Parameter('Amplitude', A)
+ f = Parameter('Frequency', f)
+ p = Parameter('Phase', p)
+ return cls(A, f, p)
+
+ def __call__(self, t):
+ return self.A.value * np.sin(2 * np.pi * self.f.value * t + self.p.value)
+
+ def plot(self, time, axis=None, **kwargs):
+ if axis is None:
+ axis = plt
+ else:
+ axis.set_title(f'A={self.A.value}, F={self.f.value}, P={self.p.value}')
+ p = axis.plot(time, self(time), **kwargs)
+ return p
+
+
+# %%
+# ## Single Example
+#
+# To include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your
+# rST and your code. This separates your example
+# into distinct text and code blocks. You can continue writing code below the
+# embedded rST text block:
+
+p1 = Pendulum.from_pars()
+# Another pendulum with Amplitude = 5
+p2 = Pendulum.from_pars(A=5)
+# Another pendulum with Frequency = 4
+p3 = Pendulum.from_pars(A=5, f=4)
+# Another pendulum with Phase = pi/2
+p4 = Pendulum.from_pars(A=5, f=4, p=np.pi / 2)
+
+# %%
+# Plotting
+
+t = np.linspace(0, 3, 601)
+fig = plt.figure()
+gs = fig.add_gridspec(2, 2)
+(ax1, ax2), (ax3, ax4) = gs.subplots(sharex='col', sharey='row')
+p1.plot(t, axis=ax1)
+p2.plot(t, axis=ax2)
+p3.plot(t, axis=ax3)
+p4.plot(t, axis=ax4)
+fig.show()
+
+# %%
+# ## Multiple Examples
+#
+# To include embedded rST, use a line of >= 20 ``#``'s or ``#%%`` between your
+# rST and your code. This separates your example
+# into distinct text and code blocks. You can continue writing code below the
+# embedded rST text block:
+
+pendulum_array = [Pendulum.from_pars(p=phase) for phase in np.linspace(0, 1, 3)]
+fig = plt.figure()
+for pendulum in pendulum_array:
+ pendulum.plot(t, label=f'Phase = {pendulum.p}')
+plt.legend(loc='lower right')
+fig.show()
diff --git a/docs/base_examples/plot_baseclass1.py.md5 b/docs/base_examples/plot_baseclass1.py.md5
new file mode 100644
index 00000000..c87ff877
--- /dev/null
+++ b/docs/base_examples/plot_baseclass1.py.md5
@@ -0,0 +1 @@
+f60c2a45eebfeb6af46a1231415c19e0
\ No newline at end of file
diff --git a/docs/fitting/introduction.md b/docs/fitting/introduction.md
new file mode 100644
index 00000000..a8bc0ea0
--- /dev/null
+++ b/docs/fitting/introduction.md
@@ -0,0 +1,339 @@
+# Fitting in EasyScience
+
+EasyScience provides a flexible and powerful fitting framework that supports multiple optimization backends.
+This guide covers both basic usage for users wanting to fit their data, and advanced patterns for developers building scientific components.
+
+## Overview
+
+The EasyScience fitting system consists of:
+
+* **Parameters**: Scientific values with units, bounds, and fitting capabilities
+* **Models**: Objects containing parameters, inheriting from `ObjBase`
+* **Fitter**: The main fitting engine supporting multiple minimizers
+* **Minimizers**: Backend optimization engines (LMFit, Bumps, DFO-LS)
+
+## Quick Start
+
+### Basic Parameter and Model Setup
+
+```python
+import numpy as np
+from easyscience import ObjBase, Parameter, Fitter
+
+# Create a simple model with fittable parameters
+class SineModel(ObjBase):
+ def __init__(self, amplitude_val=1.0, frequency_val=1.0, phase_val=0.0):
+ amplitude = Parameter("amplitude", amplitude_val, min=0, max=10)
+ frequency = Parameter("frequency", frequency_val, min=0.1, max=5)
+ phase = Parameter("phase", phase_val, min=-np.pi, max=np.pi)
+ super().__init__("sine_model", amplitude=amplitude, frequency=frequency, phase=phase)
+
+ def __call__(self, x):
+ return self.amplitude.value * np.sin(2 * np.pi * self.frequency.value * x + self.phase.value)
+```
+
+### Basic Fitting Example
+
+```python
+# Create test data
+x_data = np.linspace(0, 2, 100)
+true_model = SineModel(amplitude_val=2.5, frequency_val=1.5, phase_val=0.5)
+y_data = true_model(x_data) + 0.1 * np.random.normal(size=len(x_data))
+
+# Create model to fit with initial guesses
+fit_model = SineModel(amplitude_val=1.0, frequency_val=1.0, phase_val=0.0)
+
+# Set which parameters to fit (unfix them)
+fit_model.amplitude.fixed = False
+fit_model.frequency.fixed = False
+fit_model.phase.fixed = False
+
+# Create fitter and perform fit
+fitter = Fitter(fit_model, fit_model)
+result = fitter.fit(x=x_data, y=y_data)
+
+# Access results
+print(f"Chi-squared: {result.chi2}")
+print(f"Fitted amplitude: {fit_model.amplitude.value} ± {fit_model.amplitude.error}")
+print(f"Fitted frequency: {fit_model.frequency.value} ± {fit_model.frequency.error}")
+```
+
+## Available Minimizers
+
+EasyScience supports multiple optimization backends:
+
+```python
+from easyscience import AvailableMinimizers
+
+# View all available minimizers
+fitter = Fitter(model, model)
+print(fitter.available_minimizers)
+# Output: ['LMFit', 'LMFit_leastsq', 'LMFit_powell', 'Bumps', 'Bumps_simplex', 'DFO', 'DFO_leastsq']
+```
+
+### Switching Minimizers
+
+```python
+# Use LMFit (default)
+fitter.switch_minimizer(AvailableMinimizers.LMFit)
+result1 = fitter.fit(x=x_data, y=y_data)
+
+# Switch to Bumps
+fitter.switch_minimizer(AvailableMinimizers.Bumps)
+result2 = fitter.fit(x=x_data, y=y_data)
+
+# Use DFO for derivative-free optimization
+fitter.switch_minimizer(AvailableMinimizers.DFO)
+result3 = fitter.fit(x=x_data, y=y_data)
+```
+
+## Parameter Management
+
+### Setting Bounds and Constraints
+
+```python
+# Parameter with bounds
+param = Parameter(name="amplitude", value=1.0, min=0.0, max=10.0, unit="m")
+
+# Fix parameter (exclude from fitting)
+param.fixed = True
+
+# Unfix parameter (include in fitting)
+param.fixed = False
+
+# Change bounds dynamically
+param.min = 0.5
+param.max = 8.0
+```
+
+### Parameter Dependencies
+
+Parameters can depend on other parameters through expressions:
+
+```python
+# Create independent parameters
+length = Parameter("length", 10.0, unit="m", min=1, max=100)
+width = Parameter("width", 5.0, unit="m", min=1, max=50)
+
+# Create dependent parameter
+area = Parameter.from_dependency(
+ name="area",
+ dependency_expression="length * width",
+ dependency_map={"length": length, "width": width}
+)
+
+# When length or width changes, area updates automatically
+length.value = 15.0
+print(area.value) # Will be 75.0 (15 * 5)
+```
+
+### Using make_dependent_on() Method
+
+You can also make an existing parameter dependent on other parameters using the `make_dependent_on()` method. This is useful when you want to convert an independent parameter into a dependent one:
+
+```python
+# Create independent parameters
+radius = Parameter("radius", 5.0, unit="m", min=1, max=20)
+height = Parameter("height", 10.0, unit="m", min=1, max=50)
+volume = Parameter("volume", 100.0, unit="m³") # Initially independent
+pi = Parameter("pi", 3.14159, fixed=True) # Constant parameter
+
+# Make volume dependent on radius and height
+volume.make_dependent_on(
+ dependency_expression="pi * radius**2 * height",
+ dependency_map={"radius": radius, "height": height, "pi": pi}
+)
+
+# Now volume automatically updates when radius or height changes
+radius.value = 8.0
+print(f"New volume: {volume.value:.2f} m³") # Automatically calculated
+
+# The parameter becomes dependent and cannot be set directly
+try:
+ volume.value = 200.0 # This will raise an AttributeError
+except AttributeError:
+ print("Cannot set value of dependent parameter directly")
+```
+
+**What to expect:**
+
+- The parameter becomes **dependent** and its `independent` property becomes `False`
+- You **cannot directly set** the value, bounds, or variance of a dependent parameter
+- The parameter's value is **automatically recalculated** whenever any of its dependencies change
+- Dependent parameters **cannot be fitted** (they are automatically fixed)
+- The original value, unit, variance, min, and max are **overwritten** by the dependency calculation
+- You can **revert to independence** using the `make_independent()` method if needed
+
+## Advanced Fitting Options
+
+### Setting Tolerances and Limits
+
+```python
+fitter = Fitter(model, model)
+
+# Set convergence tolerance
+fitter.tolerance = 1e-8
+
+# Limit maximum function evaluations
+fitter.max_evaluations = 1000
+
+# Perform fit with custom settings
+result = fitter.fit(x=x_data, y=y_data)
+```
+
+### Using Weights
+
+```python
+# Define weights (inverse variance)
+weights = 1.0 / errors**2 # where errors are your data uncertainties
+
+# Fit with weights
+result = fitter.fit(x=x_data, y=y_data, weights=weights)
+```
+
+### Multidimensional Fitting
+
+```python
+class AbsSin2D(ObjBase):
+ def __init__(self, offset_val=0.0, phase_val=0.0):
+ offset = Parameter("offset", offset_val)
+ phase = Parameter("phase", phase_val)
+ super().__init__("sin2D", offset=offset, phase=phase)
+
+ def __call__(self, x):
+ X, Y = x[:, 0], x[:, 1] # x is 2D array
+ return np.abs(np.sin(self.phase.value * X + self.offset.value)) * \
+ np.abs(np.sin(self.phase.value * Y + self.offset.value))
+
+# Create 2D data
+x_2d = np.column_stack([x_grid.ravel(), y_grid.ravel()])
+
+# Fit 2D model
+model_2d = AbsSin2D(offset_val=0.1, phase_val=1.0)
+model_2d.offset.fixed = False
+model_2d.phase.fixed = False
+
+fitter = Fitter(model_2d, model_2d)
+result = fitter.fit(x=x_2d, y=z_data.ravel())
+```
+
+## Accessing Fit Results
+
+The `FitResults` object contains comprehensive information about the fit:
+
+```python
+result = fitter.fit(x=x_data, y=y_data)
+
+# Fit statistics
+print(f"Chi-squared: {result.chi2}")
+print(f"Reduced chi-squared: {result.reduced_chi}")
+print(f"Number of parameters: {result.n_pars}")
+print(f"Success: {result.success}")
+
+# Parameter values and uncertainties
+for param_name, value in result.p.items():
+ error = result.errors.get(param_name, 0.0)
+ print(f"{param_name}: {value} ± {error}")
+
+# Calculated values and residuals
+y_calculated = result.y_calc
+residuals = result.residual
+
+# Plot results
+import matplotlib.pyplot as plt
+plt.figure(figsize=(10, 4))
+plt.subplot(121)
+plt.plot(x_data, y_data, 'o', label='Data')
+plt.plot(x_data, y_calculated, '-', label='Fit')
+plt.legend()
+plt.subplot(122)
+plt.plot(x_data, residuals, 'o')
+plt.axhline(0, color='k', linestyle='--')
+plt.ylabel('Residuals')
+```
+
+## Developer Guidelines
+
+### Creating Custom Models
+
+For developers building scientific components:
+
+```python
+from easyscience import ObjBase, Parameter
+
+class CustomModel(ObjBase):
+ def __init__(self, param1_val=1.0, param2_val=0.0):
+ # Always create Parameters with appropriate bounds and units
+ param1 = Parameter("param1", param1_val, min=-10, max=10, unit="m/s")
+ param2 = Parameter("param2", param2_val, min=0, max=1, fixed=True)
+
+ # Call parent constructor with named parameters
+ super().__init__("custom_model", param1=param1, param2=param2)
+
+ def __call__(self, x):
+ # Implement your model calculation
+ return self.param1.value * x + self.param2.value
+
+ def get_fit_parameters(self):
+ # This is automatically implemented by ObjBase
+ # Returns only non-fixed parameters
+ return super().get_fit_parameters()
+```
+
+### Best Practices
+
+1. **Always set appropriate bounds** on parameters to constrain the search space
+2. **Use meaningful units** for physical parameters
+3. **Fix parameters** that shouldn't be optimized
+4. **Test with different minimizers** for robustness
+5. **Validate results** by checking chi-squared and residuals
+
+### Error Handling
+
+```python
+from easyscience.fitting.minimizers import FitError
+
+try:
+ result = fitter.fit(x=x_data, y=y_data)
+ if not result.success:
+ print(f"Fit failed: {result.message}")
+except FitError as e:
+ print(f"Fitting error: {e}")
+except Exception as e:
+ print(f"Unexpected error: {e}")
+```
+
+### Testing Patterns
+
+When writing tests for fitting code:
+
+```python
+import pytest
+from easyscience import global_object
+
+@pytest.fixture
+def clear_global_map():
+ """Clear global map before each test"""
+ global_object.map._clear()
+ yield
+ global_object.map._clear()
+
+def test_model_fitting(clear_global_map):
+ # Create model and test fitting
+ model = CustomModel()
+ model.param1.fixed = False
+
+ # Generate test data
+ x_test = np.linspace(0, 10, 50)
+ y_test = 2.5 * x_test + 0.1 * np.random.normal(size=len(x_test))
+
+ # Fit and verify
+ fitter = Fitter(model, model)
+ result = fitter.fit(x=x_test, y=y_test)
+
+ assert result.success
+ assert model.param1.value == pytest.approx(2.5, abs=0.1)
+```
+
+This comprehensive guide covers the essential aspects of fitting in EasyScience, from basic usage to advanced developer patterns.
+The examples are drawn from the actual test suite and demonstrate real-world usage patterns.
diff --git a/docs/fitting_examples/index.md b/docs/fitting_examples/index.md
new file mode 100644
index 00000000..facfb25c
--- /dev/null
+++ b/docs/fitting_examples/index.md
@@ -0,0 +1,33 @@
+# Fitting Examples
+
+This section gathers examples which demonstrate fitting functionality using EasyScience's fitting capabilities.
+
+
+
+
+
+
+
+
+
+
+
+
+[:fontawesome-solid-download: Download all examples in Python source code: fitting_examples_python.zip](./fitting_examples_python.zip){ .md-button .center}
+
+[:fontawesome-solid-download: Download all examples in Jupyter notebooks: fitting_examples_jupyter.zip](./fitting_examples_jupyter.zip){ .md-button .center}
+
+
+[Gallery generated by mkdocs-gallery](https://smarie.github.io/mkdocs-gallery){: .mkd-glr-signature }
diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md
new file mode 100644
index 00000000..45449e6c
--- /dev/null
+++ b/docs/getting-started/installation.md
@@ -0,0 +1,26 @@
+# Installation
+
+**EasyScience** requires Python 3.11 or above.
+
+## Install via `pip`
+
+The easiest way of obtaining EasyScience and using it in your project is via pip. You can install directly by using:
+
+```console
+$ pip install EasyScience
+```
+
+## Install as an EasyScience developer
+
+You can obtain the latest development source from our [Github repository](https://github.com/easyscience/corelib):
+
+```console
+$ git clone https://github.com/easyscience/corelib
+$ cd corelib
+```
+
+And install via pip:
+
+```console
+$ pip install -e .
+```
diff --git a/docs/getting-started/overview.md b/docs/getting-started/overview.md
new file mode 100644
index 00000000..3bab96d3
--- /dev/null
+++ b/docs/getting-started/overview.md
@@ -0,0 +1,204 @@
+# Overview
+
+EasyScience is a foundational Python library that provides the building blocks for scientific data simulation, analysis, and fitting.
+It implements a descriptor-based object system with global state management, making it easy to create scientific models with parameters
+that have units, bounds, and dependencies.
+
+## What is EasyScience?
+
+EasyScience serves as the core foundation for the EasyScience family of projects, offering:
+
+* **Scientific Parameters**: Values with units, uncertainties, bounds, and fitting capabilities
+* **Model Building**: Base classes for creating complex scientific models
+* **Multi-backend Fitting**: Support for LMFit, Bumps, and DFO-LS optimization engines
+* **Parameter Dependencies**: Express relationships between parameters through mathematical expressions
+* **Serialization**: Save and load complete model states including parameter relationships
+* **Undo/Redo System**: Track and revert changes to model parameters
+* **Global State Management**: Unified tracking of all objects and their relationships
+
+## Key Concepts
+
+### Descriptor-Based Architecture
+
+EasyScience uses a hierarchical descriptor system:
+
+```python
+from easyscience import Parameter, ObjBase
+
+# Scientific parameter with units and bounds
+temperature = Parameter(
+ name="temperature",
+ value=300.0,
+ unit="K",
+ min=0,
+ max=1000,
+ description="Sample temperature"
+)
+
+# Model containing parameters
+class ThermalModel(ObjBase):
+ def __init__(self, temp_val=300.0, coeff_val=1.0):
+ temperature = Parameter("temperature", temp_val, unit="K", min=0, max=1000)
+ coefficient = Parameter("coefficient", coeff_val, min=0, max=10)
+ super().__init__("thermal_model", temperature=temperature, coefficient=coefficient)
+```
+
+The hierarchy flows from:
+
+* `DescriptorBase` → `DescriptorNumber` → `Parameter` (fittable scientific values)
+* `BasedBase` → `ObjBase` (containers for parameters and scientific models)
+* `CollectionBase` (mutable sequences of scientific objects)
+
+### Units and Physical Quantities
+
+EasyScience integrates with [scipp](https://scipp.github.io/) for robust unit handling:
+
+```python
+# Parameters automatically handle units
+length = Parameter("length", 100, unit="cm", min=0, max=1000)
+
+# Unit conversions are automatic
+length.convert_unit("m")
+print(length.value) # 1.0
+print(length.unit) # m
+
+# Arithmetic operations preserve units
+area = length * length # Results in m^2
+```
+
+### Parameter Dependencies
+
+Parameters can depend on other parameters through mathematical expressions:
+
+```python
+# Independent parameters
+radius = Parameter("radius", 5.0, unit="m", min=0, max=100)
+height = Parameter("height", 10.0, unit="m", min=0, max=200)
+
+# Dependent parameter using mathematical expression
+volume = Parameter.from_dependency(
+ name="volume",
+ dependency_expression="3.14159 * radius**2 * height",
+ dependency_map={"radius": radius, "height": height}
+)
+
+# Automatic updates
+radius.value = 10.0
+print(volume.value) # Automatically recalculated
+```
+
+### Global State Management
+
+All EasyScience objects register with a global map for dependency tracking:
+
+```python
+from easyscience import global_object
+
+# All objects are automatically tracked
+param = Parameter("test", 1.0)
+print(param.unique_name) # Automatically generated unique identifier
+
+# Access global registry
+all_objects = global_object.map.vertices()
+
+# Clear for testing (important in unit tests)
+global_object.map._clear()
+```
+
+### Fitting and Optimization
+
+EasyScience provides a unified interface to multiple optimization backends:
+
+```python
+from easyscience import Fitter, AvailableMinimizers
+
+# Create fitter with model
+fitter = Fitter(model, model) # model serves as both object and function
+
+# Switch between different optimizers
+fitter.switch_minimizer(AvailableMinimizers.LMFit) # Levenberg-Marquardt
+fitter.switch_minimizer(AvailableMinimizers.Bumps) # Bayesian inference
+fitter.switch_minimizer(AvailableMinimizers.DFO) # Derivative-free
+
+# Perform fit
+result = fitter.fit(x=x_data, y=y_data, weights=weights)
+```
+
+### Serialization and Persistence
+
+Complete model states can be saved and restored:
+
+```python
+# Save model to dictionary
+model_dict = model.as_dict()
+
+# Save to JSON
+import json
+with open('model.json', 'w') as f:
+ json.dump(model_dict, f, indent=2, default=str)
+
+# Restore model
+with open('model.json', 'r') as f:
+ loaded_dict = json.load(f)
+
+new_model = Model.from_dict(loaded_dict)
+
+# Resolve parameter dependencies after loading
+from easyscience.variable.parameter_dependency_resolver import resolve_all_parameter_dependencies
+resolve_all_parameter_dependencies(new_model)
+```
+
+## Use Cases
+
+EasyScience is designed for:
+
+### Scientific Modeling
+
+* Creating physics-based models with parameters that have physical meaning
+* Handling units consistently throughout calculations
+* Managing complex parameter relationships and constraints
+
+### Data Fitting and Analysis
+
+* Fitting experimental data to theoretical models
+* Comparing different optimization algorithms
+* Uncertainty quantification and error propagation
+
+### Software Development
+
+* Building domain-specific scientific applications
+* Creating reusable model components
+* Implementing complex scientific workflows
+
+### Research and Education
+
+* Reproducible scientific computing
+* Teaching scientific programming concepts
+* Collaborative model development
+
+## Architecture Benefits
+
+**Type Safety**: Strong typing with unit checking prevents common errors
+
+**Flexibility**: Multiple optimization backends allow algorithm comparison
+
+**Extensibility**: Descriptor pattern makes it easy to add new parameter types
+
+**Reproducibility**: Complete serialization enables exact state restoration
+
+**Performance**: Efficient observer pattern minimizes unnecessary recalculations
+
+**Testing**: Global state management with cleanup utilities supports robust testing
+
+## Getting Started
+
+The best way to learn EasyScience is through examples:
+
+1. **Basic Usage**: Start with simple parameters and models
+2. **Fitting Tutorial**: Learn the fitting system with real data
+3. **Advanced Features**: Explore parameter dependencies and serialization
+4. **Development Guide**: Build your own scientific components
+
+See the [installation](installation.md) guide to get started, then explore the [fitting introduction](../fitting/introduction.md) for practical examples.
+
+EasyScience forms the foundation for more specialized packages in the EasyScience ecosystem, providing the core abstractions that make scientific computing more accessible and reliable.
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 00000000..63c6dd04
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,125 @@
+# Welcome to EasyScience's documentation!
+
+**EasyScience** is a foundational Python library that provides the building blocks for scientific data simulation, analysis, and fitting.
+It implements a descriptor-based object system with global state management, making it easier to create scientific models with parameters
+that have units, bounds, and dependencies.
+
+```python
+from easyscience import Parameter, ObjBase, Fitter
+
+# Create a model with scientific parameters
+class SineModel(ObjBase):
+ def __init__(self, amplitude=1.0, frequency=1.0, phase=0.0):
+ amp = Parameter("amplitude", amplitude, min=0, max=10, unit="V")
+ freq = Parameter("frequency", frequency, min=0.1, max=5, unit="Hz")
+ phase = Parameter("phase", phase, min=-3.14, max=3.14, unit="rad")
+ super().__init__("sine_model", amplitude=amp, frequency=freq, phase=phase)
+
+ def __call__(self, x):
+ return self.amplitude.value * np.sin(2*np.pi*self.frequency.value*x + self.phase.value)
+
+# Fit to experimental data
+model = SineModel()
+model.amplitude.fixed = False # Allow fitting
+fitter = Fitter(model, model)
+result = fitter.fit(x=x_data, y=y_data)
+```
+
+## Key Features
+
+**Scientific Parameters with Units**
+: Parameters automatically handle physical units, bounds, and uncertainties using [scipp](https://scipp.github.io/) integration.
+
+**Parameter Dependencies**
+: Express mathematical relationships between parameters that update automatically when dependencies change.
+
+**Multi-Backend Fitting**
+: Unified interface to LMFit, Bumps, and DFO-LS optimization engines with easy algorithm comparison.
+
+**Complete Serialization**
+: Save and restore entire model states including parameter relationships and dependencies.
+
+**Global State Management**
+: Automatic tracking of all objects and their relationships with built-in undo/redo capabilities.
+
+**Developer-Friendly**
+: Clean APIs, comprehensive testing utilities, and extensive documentation for building scientific applications.
+
+## Why EasyScience?
+
+**Type Safety & Units**
+: Prevent common scientific computing errors with automatic unit checking and strong typing.
+
+**Reproducible Research**
+: Complete state serialization ensures exact reproducibility of scientific analyses.
+
+**Algorithm Flexibility**
+: Compare different optimization approaches without changing your model code.
+
+**Extensible Architecture**
+: Descriptor pattern makes it easy to create new parameter types and model components.
+
+## Open Source & Cross-Platform
+
+EasyScience is free and open-source software with the source code openly shared on [GitHub repository](https://github.com/easyScience/EasyScience).
+
+* **Cross-platform** - Written in Python and available for Windows, macOS, and Linux
+* **Well-tested** - Comprehensive test suite ensuring reliability across platforms
+* **Community-driven** - Open to contributions and feature requests
+* **Production-ready** - Used in multiple scientific applications worldwide
+
+## Projects Built with EasyScience
+
+EasyScience serves as the foundation for several scientific applications:
+
+**easyDiffraction**
+
+
+
+Scientific software for modeling and analysis of neutron diffraction data, providing an intuitive interface for crystallographic refinement.
+
+[Visit easyDiffraction](https://easydiffraction.org)
+
+**easyReflectometry**
+
+
+
+Scientific software for modeling and analysis of neutron reflectometry data, enabling detailed study of thin film structures.
+
+[Visit easyReflectometry](https://easyreflectometry.org)
+
+
+EasyScience's flexible architecture makes it ideal for building domain-specific scientific applications. The comprehensive API and documentation help you get started quickly.
+
+## Quick Start
+
+Ready to begin? Here's how to get started:
+
+1. **Install EasyScience**: `pip install easyscience`
+2. **Read the Overview**: Understand the core concepts and architecture
+3. **Try the Examples**: Work through practical fitting examples
+4. **Explore the API**: Dive into the comprehensive reference documentation
+
+```bash
+pip install easyscience
+```
+
+Then explore the tutorials and examples to learn the key concepts!
+
+## Need Help?
+
+* **GitHub Issues**: Report bugs or request features on [GitHub Issues](https://github.com/easyScience/EasyScience/issues)
+* **Discussions**: Ask questions in [GitHub Discussions](https://github.com/easyScience/EasyScience/discussions)
+* **API Reference**: Complete documentation of all classes and methods
+* **Examples**: Practical tutorials and code samples
+
+## Contributing
+
+EasyScience is developed openly and welcomes contributions! Whether you're fixing bugs, adding features, improving documentation, or sharing usage examples, your contributions help make scientific computing more accessible.
+
+Visit our [GitHub repository](https://github.com/easyScience/EasyScience) to:
+
+* Report issues or suggest features
+* Submit pull requests
+* Join discussions about development
+* Help improve documentation
diff --git a/docs/javascripts/mathjax.js b/docs/javascripts/mathjax.js
new file mode 100644
index 00000000..80e81ba5
--- /dev/null
+++ b/docs/javascripts/mathjax.js
@@ -0,0 +1,12 @@
+window.MathJax = {
+ tex: {
+ inlineMath: [["\\(", "\\)"]],
+ displayMath: [["\\[", "\\]"]],
+ processEscapes: true,
+ processEnvironments: true
+ },
+ options: {
+ ignoreHtmlClass: ".*|",
+ processHtmlClass: "arithmatex"
+ }
+};
diff --git a/docs/make.bat b/docs/make.bat
deleted file mode 100644
index 135acda3..00000000
--- a/docs/make.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@ECHO OFF
-
-pushd %~dp0
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
- set SPHINXBUILD=sphinx-build
-)
-set SOURCEDIR=./src
-set BUILDDIR=_build
-
-if "%1" == "" goto help
-
-%SPHINXBUILD% >NUL 2>NUL
-if errorlevel 9009 (
- echo.
- echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
- echo.installed, then set the SPHINXBUILD environment variable to point
- echo.to the full path of the 'sphinx-build' executable. Alternatively you
- echo.may add the Sphinx directory to PATH.
- echo.
- echo.If you don't have Sphinx installed, grab it from
- echo.http://sphinx-doc.org/
- exit /b 1
-)
-
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
-goto end
-
-:help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
-
-:end
-popd
diff --git a/docs/reference/base.md b/docs/reference/base.md
new file mode 100644
index 00000000..dd044fe3
--- /dev/null
+++ b/docs/reference/base.md
@@ -0,0 +1,245 @@
+# API Reference
+
+This reference provides detailed documentation for all EasyScience classes and functions.
+
+## Core Variables and Descriptors
+
+### Descriptor Base Classes
+
+::: easyscience.variable.DescriptorBase
+ options:
+ members: true
+
+::: easyscience.variable.DescriptorNumber
+ options:
+ members: true
+
+::: easyscience.variable.DescriptorArray
+ options:
+ members: true
+
+::: easyscience.variable.DescriptorStr
+ options:
+ members: true
+
+::: easyscience.variable.DescriptorBool
+ options:
+ members: true
+
+::: easyscience.variable.DescriptorAnyType
+ options:
+ members: true
+
+### Parameters
+
+::: easyscience.variable.Parameter
+ options:
+ members: true
+
+The Parameter class extends DescriptorNumber with fitting capabilities, bounds, and dependency relationships.
+
+## Base Classes for Models
+
+### BasedBase
+
+::: easyscience.base_classes.BasedBase
+ options:
+ members: true
+
+Base class providing serialization, global object registration, and interface management.
+
+### ObjBase
+
+::: easyscience.base_classes.ObjBase
+ options:
+ members: true
+
+Container class for creating scientific models with parameters. All user-defined models should inherit from this class.
+
+### Collections
+
+::: easyscience.base_classes.CollectionBase
+ options:
+ members: true
+
+Mutable sequence container for scientific objects with automatic parameter tracking.
+
+## Fitting and Optimization
+
+### Fitter
+
+::: easyscience.fitting.Fitter
+ options:
+ members: true
+
+Main fitting engine supporting multiple optimization backends.
+
+### Available Minimizers
+
+::: easyscience.fitting.AvailableMinimizers
+ options:
+ members: true
+
+Enumeration of available optimization backends.
+
+### Fit Results
+
+::: easyscience.fitting.FitResults
+ options:
+ members: true
+
+Container for fitting results including parameters, statistics, and diagnostics.
+
+### Minimizer Base Classes
+
+::: easyscience.fitting.minimizers.MinimizerBase
+ options:
+ members: true
+
+Abstract base class for all minimizer implementations.
+
+::: easyscience.fitting.minimizers.LMFit
+ options:
+ members: true
+
+LMFit-based minimizer implementation.
+
+::: easyscience.fitting.minimizers.Bumps
+ options:
+ members: true
+
+Bumps-based minimizer implementation.
+
+::: easyscience.fitting.minimizers.DFO
+ options:
+ members: true
+
+DFO-LS-based minimizer implementation.
+
+## Global State Management
+
+### Global Object
+
+::: easyscience.global_object.GlobalObject
+ options:
+ members: true
+
+Singleton managing global state, logging, and object tracking.
+
+### Object Map
+
+::: easyscience.global_object.Map
+ options:
+ members: true
+
+Graph-based registry for tracking object relationships and dependencies.
+
+### Undo/Redo System
+
+::: easyscience.global_object.undo_redo.UndoStack
+ options:
+ members: true
+
+Stack-based undo/redo system for parameter changes.
+
+## Serialization and I/O
+
+### Serializer Components
+
+::: easyscience.io.SerializerComponent
+ options:
+ members: true
+
+Base class providing serialization capabilities.
+
+::: easyscience.io.SerializerDict
+ options:
+ members: true
+
+Dictionary-based serialization implementation.
+
+::: easyscience.io.SerializerBase
+ options:
+ members: true
+
+Base serialization functionality.
+
+## Models and Examples
+
+### Polynomial Model
+
+::: easyscience.models.Polynomial
+ options:
+ members: true
+
+Built-in polynomial model for demonstration and testing.
+
+## Job Management
+
+### Analysis and Experiments
+
+::: easyscience.job.AnalysisBase
+ options:
+ members: true
+
+::: easyscience.job.ExperimentBase
+ options:
+ members: true
+
+::: easyscience.job.JobBase
+ options:
+ members: true
+
+::: easyscience.job.TheoreticalModelBase
+ options:
+ members: true
+
+## Utility Functions
+
+### Decorators
+
+::: easyscience.global_object.undo_redo.property_stack
+
+Decorator for properties that should be tracked in the undo/redo system.
+
+### Class Tools
+
+::: easyscience.utils.classTools.addLoggedProp
+
+Utility for adding logged properties to classes.
+
+### String Utilities
+
+::: easyscience.utils.string
+ options:
+ members: true
+
+### Parameter Dependencies
+
+::: easyscience.variable.parameter_dependency_resolver.resolve_all_parameter_dependencies
+
+Resolve all pending parameter dependencies after deserialization.
+
+::: easyscience.variable.parameter_dependency_resolver.get_parameters_with_pending_dependencies
+
+Find parameters that have unresolved dependencies.
+
+## Constants and Enumerations
+
+The `easyscience.global_object` is a global singleton instance managing application state.
+
+## Exception Classes
+
+::: easyscience.fitting.minimizers.FitError
+
+Exception raised when fitting operations fail.
+
+## Usage Examples
+
+For practical usage examples and tutorials, see:
+
+* [Overview](../getting-started/overview.md) - Introduction and key concepts
+* [Fitting Introduction](../fitting/introduction.md) - Comprehensive fitting guide
+* [Installation](../getting-started/installation.md) - Installation instructions
+
+The API reference covers all public classes and methods. For implementation details and advanced usage patterns, refer to the source code and test suites in the repository.
diff --git a/docs/src/_static/ec_logo_single.png b/docs/src/_static/ec_logo_single.png
deleted file mode 100644
index 77c1f9a4..00000000
Binary files a/docs/src/_static/ec_logo_single.png and /dev/null differ
diff --git a/docs/src/_static/ec_sidebar.png b/docs/src/_static/ec_sidebar.png
deleted file mode 100644
index a8bb6c7b..00000000
Binary files a/docs/src/_static/ec_sidebar.png and /dev/null differ
diff --git a/docs/src/_static/ec_sidebar_w.png b/docs/src/_static/ec_sidebar_w.png
deleted file mode 100644
index d1f407a3..00000000
Binary files a/docs/src/_static/ec_sidebar_w.png and /dev/null differ
diff --git a/docs/src/_static/favicon.ico b/docs/src/_static/favicon.ico
deleted file mode 100644
index 9281805b..00000000
Binary files a/docs/src/_static/favicon.ico and /dev/null differ
diff --git a/docs/src/conf.py b/docs/src/conf.py
deleted file mode 100644
index f8445631..00000000
--- a/docs/src/conf.py
+++ /dev/null
@@ -1,228 +0,0 @@
-#!/usr/bin/env python
-
-# SPDX-FileCopyrightText: 2021 EasyScience contributors
-# SPDX-License-Identifier: BSD-3-Clause
-# © 2021 Contributors to the EasyScience project
-
-#
-# Configuration file for the Sphinx documentation builder.
-#
-# This file does only contain a selection of the most common options. For a
-# full list see the documentation:
-# http://www.sphinx-doc.org/en/master/config
-
-# -- Path setup --------------------------------------------------------------
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#
-import os
-import sys
-# import toml
-from pathlib import Path
-import easyscience
-# sys.path.insert(0, os.path.abspath('.'))
-main_root = Path(__file__).parents[2]
-sys.path.append(str(main_root))
-
-import datetime
-
-# project_info = toml.load(os.path.join(main_root, 'pyproject.toml'))
-
-# -- Project information -----------------------------------------------------
-
-project = 'EasyScience'
-copyright = f"{datetime.date.today().year}, EasyScience Contributors"
-author = "EasyScience Contributors"
-# copyright = f"2021, {project_info['tool']['poetry']['authors'][0]}"
-# author = project_info['tool']['poetry']['authors'][0]
-
-# # The short X.Y version
-# version = ''
-# # The full version, including alpha/beta/rc tags
-# release = project_info['tool']['poetry']['version']
-# The short X.Y version.
-#version = project_info['project']['version']
-# The full version, including alpha/beta/rc tags.
-#version = project_info['project']['version']
-version = easyscience.__version__
-
-
-intersphinx_mapping = {
- 'python': ('https://docs.python.org/3', None),
- 'numpy': ('https://numpy.org/doc/stable/', None)
-}
-
-# -- General configuration ---------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#
-# needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- 'sphinx.ext.githubpages',
- 'sphinx.ext.napoleon',
- 'sphinx.ext.autodoc',
- 'sphinx_autodoc_typehints',
- 'sphinx.ext.viewcode',
- 'sphinx.ext.mathjax',
- 'sphinx.ext.intersphinx',
- 'sphinx_gallery.gen_gallery',
-]
-autoclass_content = 'init'
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix(es) of source filenames.
-# You can specify multiple suffix as a list of string:
-#
-# source_suffix = ['.rst', '.md']
-source_suffix = '.rst'
-
-# The master toctree document.
-master_doc = 'index'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = 'en'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-highlight_language = 'python3'
-
-# -- Options for HTML output -------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-#
-html_theme = 'sphinx_book_theme'
-html_logo = os.path.join('_static', 'ec_sidebar_w.png')
-html_favicon = os.path.join('_static', 'favicon.ico')
-html_theme_options = {}
-# html_theme_options = {
-# 'logo': os.path.join('ec_logo_single.png'),
-# 'github_user': project_info['tool']['github']['info']['organization'],
-# 'github_repo': project_info['tool']['github']['info']['repo'],
-# }
-
-
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-#
-# html_theme_options = {}
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# Custom sidebar templates, must be a dictionary that maps document names
-# to template names.
-#
-# The default sidebars (for documents that don't match any pattern) are
-# defined by theme itself. Builtin themes are using these templates by
-# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
-# 'searchbox.html']``.
-#
-# html_sidebars = {}
-
-
-# -- Options for HTMLHelp output ---------------------------------------------
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'easySciencedoc'
-
-
-# -- Options for LaTeX output ------------------------------------------------
-
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- #
- # 'papersize': 'letterpaper',
-
- # The font size ('10pt', '11pt' or '12pt').
- #
- # 'pointsize': '10pt',
-
- # Additional stuff for the LaTeX preamble.
- #
- # 'preamble': '',
-
- # Latex figure (float) alignment
- #
- # 'figure_align': 'htbp',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-# author, documentclass [howto, manual, or own class]).
-latex_documents = [
- (master_doc, 'EasyScience.tex', 'EasyScience Documentation',
- 'Simon Ward', 'manual'),
-]
-
-
-# -- Options for manual page output ------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
- (master_doc, 'EasyScience', 'EasyScience Documentation',
- [author], 1)
-]
-
-
-# -- Options for Texinfo output ----------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-texinfo_documents = [
- (master_doc, 'EasyScience', 'EasyScience Documentation',
- author, 'EasyScience', 'One line description of project.',
- 'Miscellaneous'),
-]
-
-
-# -- Options for Epub output -------------------------------------------------
-
-# Bibliographic Dublin Core info.
-epub_title = project
-
-# The unique identifier of the text. This can be a ISBN number
-# or the project homepage.
-#
-# epub_identifier = ''
-
-# A unique identification for the text.
-#
-# epub_uid = ''
-
-# A list of files that should not be packed into the epub file.
-epub_exclude_files = ['search.html']
-
-
-sphinx_gallery_conf = {
- 'examples_dirs': [os.path.join(main_root, 'Examples', 'base'),
- os.path.join(main_root, 'Examples', 'fitting')], # path to your example scripts
- 'gallery_dirs': ['base_examples', 'fitting_examples'], # path to where to save gallery generated output
- 'backreferences_dir': 'gen_modules/backreferences', # directory where function/class granular galleries are stored
- # Modules for which function/class level galleries are created. In
- # this case sphinx_gallery and numpy in a tuple of strings.
- 'doc_module': ('sphinx_gallery', 'numpy', 'EasyScience'),
-}
\ No newline at end of file
diff --git a/docs/src/fitting/introduction.rst b/docs/src/fitting/introduction.rst
deleted file mode 100644
index 0a694090..00000000
--- a/docs/src/fitting/introduction.rst
+++ /dev/null
@@ -1,362 +0,0 @@
-======================
-Fitting in EasyScience
-======================
-
-EasyScience provides a flexible and powerful fitting framework that supports multiple optimization backends.
-This guide covers both basic usage for users wanting to fit their data, and advanced patterns for developers building scientific components.
-
-Overview
---------
-
-The EasyScience fitting system consists of:
-
-* **Parameters**: Scientific values with units, bounds, and fitting capabilities
-* **Models**: Objects containing parameters, inheriting from ``ObjBase``
-* **Fitter**: The main fitting engine supporting multiple minimizers
-* **Minimizers**: Backend optimization engines (LMFit, Bumps, DFO-LS)
-
-Quick Start
------------
-
-Basic Parameter and Model Setup
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- import numpy as np
- from easyscience import ObjBase, Parameter, Fitter
-
- # Create a simple model with fittable parameters
- class SineModel(ObjBase):
- def __init__(self, amplitude_val=1.0, frequency_val=1.0, phase_val=0.0):
- amplitude = Parameter("amplitude", amplitude_val, min=0, max=10)
- frequency = Parameter("frequency", frequency_val, min=0.1, max=5)
- phase = Parameter("phase", phase_val, min=-np.pi, max=np.pi)
- super().__init__("sine_model", amplitude=amplitude, frequency=frequency, phase=phase)
-
- def __call__(self, x):
- return self.amplitude.value * np.sin(2 * np.pi * self.frequency.value * x + self.phase.value)
-
-Basic Fitting Example
-~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Create test data
- x_data = np.linspace(0, 2, 100)
- true_model = SineModel(amplitude_val=2.5, frequency_val=1.5, phase_val=0.5)
- y_data = true_model(x_data) + 0.1 * np.random.normal(size=len(x_data))
-
- # Create model to fit with initial guesses
- fit_model = SineModel(amplitude_val=1.0, frequency_val=1.0, phase_val=0.0)
-
- # Set which parameters to fit (unfix them)
- fit_model.amplitude.fixed = False
- fit_model.frequency.fixed = False
- fit_model.phase.fixed = False
-
- # Create fitter and perform fit
- fitter = Fitter(fit_model, fit_model)
- result = fitter.fit(x=x_data, y=y_data)
-
- # Access results
- print(f"Chi-squared: {result.chi2}")
- print(f"Fitted amplitude: {fit_model.amplitude.value} ± {fit_model.amplitude.error}")
- print(f"Fitted frequency: {fit_model.frequency.value} ± {fit_model.frequency.error}")
-
-Available Minimizers
---------------------
-
-EasyScience supports multiple optimization backends:
-
-.. code-block:: python
-
- from easyscience import AvailableMinimizers
-
- # View all available minimizers
- fitter = Fitter(model, model)
- print(fitter.available_minimizers)
- # Output: ['LMFit', 'LMFit_leastsq', 'LMFit_powell', 'Bumps', 'Bumps_simplex', 'DFO', 'DFO_leastsq']
-
-Switching Minimizers
-~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Use LMFit (default)
- fitter.switch_minimizer(AvailableMinimizers.LMFit)
- result1 = fitter.fit(x=x_data, y=y_data)
-
- # Switch to Bumps
- fitter.switch_minimizer(AvailableMinimizers.Bumps)
- result2 = fitter.fit(x=x_data, y=y_data)
-
- # Use DFO for derivative-free optimization
- fitter.switch_minimizer(AvailableMinimizers.DFO)
- result3 = fitter.fit(x=x_data, y=y_data)
-
-Parameter Management
---------------------
-
-Setting Bounds and Constraints
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Parameter with bounds
- param = Parameter(name="amplitude", value=1.0, min=0.0, max=10.0, unit="m")
-
- # Fix parameter (exclude from fitting)
- param.fixed = True
-
- # Unfix parameter (include in fitting)
- param.fixed = False
-
- # Change bounds dynamically
- param.min = 0.5
- param.max = 8.0
-
-Parameter Dependencies
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Parameters can depend on other parameters through expressions:
-
-.. code-block:: python
-
- # Create independent parameters
- length = Parameter("length", 10.0, unit="m", min=1, max=100)
- width = Parameter("width", 5.0, unit="m", min=1, max=50)
-
- # Create dependent parameter
- area = Parameter.from_dependency(
- name="area",
- dependency_expression="length * width",
- dependency_map={"length": length, "width": width}
- )
-
- # When length or width changes, area updates automatically
- length.value = 15.0
- print(area.value) # Will be 75.0 (15 * 5)
-
-Using make_dependent_on() Method
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can also make an existing parameter dependent on other parameters using the ``make_dependent_on()`` method. This is useful when you want to convert an independent parameter into a dependent one:
-
-.. code-block:: python
-
- # Create independent parameters
- radius = Parameter("radius", 5.0, unit="m", min=1, max=20)
- height = Parameter("height", 10.0, unit="m", min=1, max=50)
- volume = Parameter("volume", 100.0, unit="m³") # Initially independent
- pi = Parameter("pi", 3.14159, fixed=True) # Constant parameter
-
- # Make volume dependent on radius and height
- volume.make_dependent_on(
- dependency_expression="pi * radius**2 * height",
- dependency_map={"radius": radius, "height": height, "pi": pi}
- )
-
- # Now volume automatically updates when radius or height changes
- radius.value = 8.0
- print(f"New volume: {volume.value:.2f} m³") # Automatically calculated
-
- # The parameter becomes dependent and cannot be set directly
- try:
- volume.value = 200.0 # This will raise an AttributeError
- except AttributeError:
- print("Cannot set value of dependent parameter directly")
-
-**What to expect:**
-
-- The parameter becomes **dependent** and its ``independent`` property becomes ``False``
-- You **cannot directly set** the value, bounds, or variance of a dependent parameter
-- The parameter's value is **automatically recalculated** whenever any of its dependencies change
-- Dependent parameters **cannot be fitted** (they are automatically fixed)
-- The original value, unit, variance, min, and max are **overwritten** by the dependency calculation
-- You can **revert to independence** using the ``make_independent()`` method if needed
-
-Advanced Fitting Options
-------------------------
-
-Setting Tolerances and Limits
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- fitter = Fitter(model, model)
-
- # Set convergence tolerance
- fitter.tolerance = 1e-8
-
- # Limit maximum function evaluations
- fitter.max_evaluations = 1000
-
- # Perform fit with custom settings
- result = fitter.fit(x=x_data, y=y_data)
-
-Using Weights
-~~~~~~~~~~~~~
-
-.. code-block:: python
-
- # Define weights (inverse variance)
- weights = 1.0 / errors**2 # where errors are your data uncertainties
-
- # Fit with weights
- result = fitter.fit(x=x_data, y=y_data, weights=weights)
-
-Multidimensional Fitting
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- class AbsSin2D(ObjBase):
- def __init__(self, offset_val=0.0, phase_val=0.0):
- offset = Parameter("offset", offset_val)
- phase = Parameter("phase", phase_val)
- super().__init__("sin2D", offset=offset, phase=phase)
-
- def __call__(self, x):
- X, Y = x[:, 0], x[:, 1] # x is 2D array
- return np.abs(np.sin(self.phase.value * X + self.offset.value)) * \
- np.abs(np.sin(self.phase.value * Y + self.offset.value))
-
- # Create 2D data
- x_2d = np.column_stack([x_grid.ravel(), y_grid.ravel()])
-
- # Fit 2D model
- model_2d = AbsSin2D(offset_val=0.1, phase_val=1.0)
- model_2d.offset.fixed = False
- model_2d.phase.fixed = False
-
- fitter = Fitter(model_2d, model_2d)
- result = fitter.fit(x=x_2d, y=z_data.ravel())
-
-Accessing Fit Results
----------------------
-
-The ``FitResults`` object contains comprehensive information about the fit:
-
-.. code-block:: python
-
- result = fitter.fit(x=x_data, y=y_data)
-
- # Fit statistics
- print(f"Chi-squared: {result.chi2}")
- print(f"Reduced chi-squared: {result.reduced_chi}")
- print(f"Number of parameters: {result.n_pars}")
- print(f"Success: {result.success}")
-
- # Parameter values and uncertainties
- for param_name, value in result.p.items():
- error = result.errors.get(param_name, 0.0)
- print(f"{param_name}: {value} ± {error}")
-
- # Calculated values and residuals
- y_calculated = result.y_calc
- residuals = result.residual
-
- # Plot results
- import matplotlib.pyplot as plt
- plt.figure(figsize=(10, 4))
- plt.subplot(121)
- plt.plot(x_data, y_data, 'o', label='Data')
- plt.plot(x_data, y_calculated, '-', label='Fit')
- plt.legend()
- plt.subplot(122)
- plt.plot(x_data, residuals, 'o')
- plt.axhline(0, color='k', linestyle='--')
- plt.ylabel('Residuals')
-
-Developer Guidelines
----------------------
-
-Creating Custom Models
-~~~~~~~~~~~~~~~~~~~~~~
-
-For developers building scientific components:
-
-.. code-block:: python
-
- from easyscience import ObjBase, Parameter
-
- class CustomModel(ObjBase):
- def __init__(self, param1_val=1.0, param2_val=0.0):
- # Always create Parameters with appropriate bounds and units
- param1 = Parameter("param1", param1_val, min=-10, max=10, unit="m/s")
- param2 = Parameter("param2", param2_val, min=0, max=1, fixed=True)
-
- # Call parent constructor with named parameters
- super().__init__("custom_model", param1=param1, param2=param2)
-
- def __call__(self, x):
- # Implement your model calculation
- return self.param1.value * x + self.param2.value
-
- def get_fit_parameters(self):
- # This is automatically implemented by ObjBase
- # Returns only non-fixed parameters
- return super().get_fit_parameters()
-
-Best Practices
-~~~~~~~~~~~~~~
-
-1. **Always set appropriate bounds** on parameters to constrain the search space
-2. **Use meaningful units** for physical parameters
-3. **Fix parameters** that shouldn't be optimized
-4. **Test with different minimizers** for robustness
-5. **Validate results** by checking chi-squared and residuals
-
-Error Handling
-~~~~~~~~~~~~~~
-
-.. code-block:: python
-
- from easyscience.fitting.minimizers import FitError
-
- try:
- result = fitter.fit(x=x_data, y=y_data)
- if not result.success:
- print(f"Fit failed: {result.message}")
- except FitError as e:
- print(f"Fitting error: {e}")
- except Exception as e:
- print(f"Unexpected error: {e}")
-
-Testing Patterns
-~~~~~~~~~~~~~~~~
-
-When writing tests for fitting code:
-
-.. code-block:: python
-
- import pytest
- from easyscience import global_object
-
- @pytest.fixture
- def clear_global_map():
- """Clear global map before each test"""
- global_object.map._clear()
- yield
- global_object.map._clear()
-
- def test_model_fitting(clear_global_map):
- # Create model and test fitting
- model = CustomModel()
- model.param1.fixed = False
-
- # Generate test data
- x_test = np.linspace(0, 10, 50)
- y_test = 2.5 * x_test + 0.1 * np.random.normal(size=len(x_test))
-
- # Fit and verify
- fitter = Fitter(model, model)
- result = fitter.fit(x=x_test, y=y_test)
-
- assert result.success
- assert model.param1.value == pytest.approx(2.5, abs=0.1)
-
-This comprehensive guide covers the essential aspects of fitting in EasyScience, from basic usage to advanced developer patterns.
-The examples are drawn from the actual test suite and demonstrate real-world usage patterns.
-
diff --git a/docs/src/getting-started/installation.rst b/docs/src/getting-started/installation.rst
deleted file mode 100644
index 4d0cef44..00000000
--- a/docs/src/getting-started/installation.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-************
-Installation
-************
-
-**EasyScience** requires Python 3.11 or above.
-
-Install via ``pip``
--------------------
-
-The easiest way of obtaining EasyScience and using it in your project is via pip. You can install directly by using:
-
-.. code-block:: console
-
- $ pip install EasyScience
-
-Install as an EasyScience developer
------------------------------------
-
-You can obtain the latest development source from our `Github repository
-`_.:
-
-.. code-block:: console
-
- $ git clone https://github.com/easyscience/corelib
- $ cd corelib
-
-And install via pip:
-
-.. code-block:: console
-
- $ pip install -e .
-
-.. installation-end-content
\ No newline at end of file
diff --git a/docs/src/getting-started/overview.rst b/docs/src/getting-started/overview.rst
deleted file mode 100644
index d5516a1c..00000000
--- a/docs/src/getting-started/overview.rst
+++ /dev/null
@@ -1,224 +0,0 @@
-.. _overview:
-
-Overview
-========
-
-EasyScience is a foundational Python library that provides the building blocks for scientific data simulation, analysis, and fitting.
-It implements a descriptor-based object system with global state management, making it easy to create scientific models with parameters
-that have units, bounds, and dependencies.
-
-What is EasyScience?
---------------------
-
-EasyScience serves as the core foundation for the EasyScience family of projects, offering:
-
-* **Scientific Parameters**: Values with units, uncertainties, bounds, and fitting capabilities
-* **Model Building**: Base classes for creating complex scientific models
-* **Multi-backend Fitting**: Support for LMFit, Bumps, and DFO-LS optimization engines
-* **Parameter Dependencies**: Express relationships between parameters through mathematical expressions
-* **Serialization**: Save and load complete model states including parameter relationships
-* **Undo/Redo System**: Track and revert changes to model parameters
-* **Global State Management**: Unified tracking of all objects and their relationships
-
-Key Concepts
-------------
-
-Descriptor-Based Architecture
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-EasyScience uses a hierarchical descriptor system:
-
-.. code-block:: python
-
- from easyscience import Parameter, ObjBase
-
- # Scientific parameter with units and bounds
- temperature = Parameter(
- name="temperature",
- value=300.0,
- unit="K",
- min=0,
- max=1000,
- description="Sample temperature"
- )
-
- # Model containing parameters
- class ThermalModel(ObjBase):
- def __init__(self, temp_val=300.0, coeff_val=1.0):
- temperature = Parameter("temperature", temp_val, unit="K", min=0, max=1000)
- coefficient = Parameter("coefficient", coeff_val, min=0, max=10)
- super().__init__("thermal_model", temperature=temperature, coefficient=coefficient)
-
-The hierarchy flows from:
-
-* ``DescriptorBase`` → ``DescriptorNumber`` → ``Parameter`` (fittable scientific values)
-* ``BasedBase`` → ``ObjBase`` (containers for parameters and scientific models)
-* ``CollectionBase`` (mutable sequences of scientific objects)
-
-Units and Physical Quantities
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-EasyScience integrates with `scipp `_ for robust unit handling:
-
-.. code-block:: python
-
- # Parameters automatically handle units
- length = Parameter("length", 100, unit="cm", min=0, max=1000)
-
- # Unit conversions are automatic
- length.convert_unit("m")
- print(length.value) # 1.0
- print(length.unit) # m
-
- # Arithmetic operations preserve units
- area = length * length # Results in m^2
-
-Parameter Dependencies
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Parameters can depend on other parameters through mathematical expressions:
-
-.. code-block:: python
-
- # Independent parameters
- radius = Parameter("radius", 5.0, unit="m", min=0, max=100)
- height = Parameter("height", 10.0, unit="m", min=0, max=200)
-
- # Dependent parameter using mathematical expression
- volume = Parameter.from_dependency(
- name="volume",
- dependency_expression="3.14159 * radius**2 * height",
- dependency_map={"radius": radius, "height": height}
- )
-
- # Automatic updates
- radius.value = 10.0
- print(volume.value) # Automatically recalculated
-
-Global State Management
-~~~~~~~~~~~~~~~~~~~~~~~
-
-All EasyScience objects register with a global map for dependency tracking:
-
-.. code-block:: python
-
- from easyscience import global_object
-
- # All objects are automatically tracked
- param = Parameter("test", 1.0)
- print(param.unique_name) # Automatically generated unique identifier
-
- # Access global registry
- all_objects = global_object.map.vertices()
-
- # Clear for testing (important in unit tests)
- global_object.map._clear()
-
-Fitting and Optimization
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-EasyScience provides a unified interface to multiple optimization backends:
-
-.. code-block:: python
-
- from easyscience import Fitter, AvailableMinimizers
-
- # Create fitter with model
- fitter = Fitter(model, model) # model serves as both object and function
-
- # Switch between different optimizers
- fitter.switch_minimizer(AvailableMinimizers.LMFit) # Levenberg-Marquardt
- fitter.switch_minimizer(AvailableMinimizers.Bumps) # Bayesian inference
- fitter.switch_minimizer(AvailableMinimizers.DFO) # Derivative-free
-
- # Perform fit
- result = fitter.fit(x=x_data, y=y_data, weights=weights)
-
-Serialization and Persistence
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Complete model states can be saved and restored:
-
-.. code-block:: python
-
- # Save model to dictionary
- model_dict = model.as_dict()
-
- # Save to JSON
- import json
- with open('model.json', 'w') as f:
- json.dump(model_dict, f, indent=2, default=str)
-
- # Restore model
- with open('model.json', 'r') as f:
- loaded_dict = json.load(f)
-
- new_model = Model.from_dict(loaded_dict)
-
- # Resolve parameter dependencies after loading
- from easyscience.variable.parameter_dependency_resolver import resolve_all_parameter_dependencies
- resolve_all_parameter_dependencies(new_model)
-
-Use Cases
----------
-
-EasyScience is designed for:
-
-Scientific Modeling
-~~~~~~~~~~~~~~~~~~~~
-
-* Creating physics-based models with parameters that have physical meaning
-* Handling units consistently throughout calculations
-* Managing complex parameter relationships and constraints
-
-Data Fitting and Analysis
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-* Fitting experimental data to theoretical models
-* Comparing different optimization algorithms
-* Uncertainty quantification and error propagation
-
-Software Development
-~~~~~~~~~~~~~~~~~~~~
-
-* Building domain-specific scientific applications
-* Creating reusable model components
-* Implementing complex scientific workflows
-
-Research and Education
-~~~~~~~~~~~~~~~~~~~~~~
-
-* Reproducible scientific computing
-* Teaching scientific programming concepts
-* Collaborative model development
-
-Architecture Benefits
----------------------
-
-**Type Safety**: Strong typing with unit checking prevents common errors
-
-**Flexibility**: Multiple optimization backends allow algorithm comparison
-
-**Extensibility**: Descriptor pattern makes it easy to add new parameter types
-
-**Reproducibility**: Complete serialization enables exact state restoration
-
-**Performance**: Efficient observer pattern minimizes unnecessary recalculations
-
-**Testing**: Global state management with cleanup utilities supports robust testing
-
-Getting Started
----------------
-
-The best way to learn EasyScience is through examples:
-
-1. **Basic Usage**: Start with simple parameters and models
-2. **Fitting Tutorial**: Learn the fitting system with real data
-3. **Advanced Features**: Explore parameter dependencies and serialization
-4. **Development Guide**: Build your own scientific components
-
-See the :doc:`installation` guide to get started, then explore the :doc:`../fitting/introduction` for practical examples.
-
-EasyScience forms the foundation for more specialized packages in the EasyScience ecosystem, providing the core abstractions that make scientific computing more accessible and reliable.
-
-
diff --git a/docs/src/index.rst b/docs/src/index.rst
deleted file mode 100644
index 10f795a8..00000000
--- a/docs/src/index.rst
+++ /dev/null
@@ -1,181 +0,0 @@
-=======================================
-Welcome to EasyScience's documentation!
-=======================================
-
-**EasyScience** is a foundational Python library that provides the building blocks for scientific data simulation, analysis, and fitting.
-It implements a descriptor-based object system with global state management, making it easier to create scientific models with parameters
-that have units, bounds, and dependencies.
-
-.. code-block:: python
-
- from easyscience import Parameter, ObjBase, Fitter
-
- # Create a model with scientific parameters
- class SineModel(ObjBase):
- def __init__(self, amplitude=1.0, frequency=1.0, phase=0.0):
- amp = Parameter("amplitude", amplitude, min=0, max=10, unit="V")
- freq = Parameter("frequency", frequency, min=0.1, max=5, unit="Hz")
- phase = Parameter("phase", phase, min=-3.14, max=3.14, unit="rad")
- super().__init__("sine_model", amplitude=amp, frequency=freq, phase=phase)
-
- def __call__(self, x):
- return self.amplitude.value * np.sin(2*np.pi*self.frequency.value*x + self.phase.value)
-
- # Fit to experimental data
- model = SineModel()
- model.amplitude.fixed = False # Allow fitting
- fitter = Fitter(model, model)
- result = fitter.fit(x=x_data, y=y_data)
-
-Key Features
-============
-
-**Scientific Parameters with Units**
- Parameters automatically handle physical units, bounds, and uncertainties using `scipp `_ integration.
-
-**Parameter Dependencies**
- Express mathematical relationships between parameters that update automatically when dependencies change.
-
-**Multi-Backend Fitting**
- Unified interface to LMFit, Bumps, and DFO-LS optimization engines with easy algorithm comparison.
-
-**Complete Serialization**
- Save and restore entire model states including parameter relationships and dependencies.
-
-**Global State Management**
- Automatic tracking of all objects and their relationships with built-in undo/redo capabilities.
-
-**Developer-Friendly**
- Clean APIs, comprehensive testing utilities, and extensive documentation for building scientific applications.
-
-Why EasyScience?
-================
-
-**Type Safety & Units**
- Prevent common scientific computing errors with automatic unit checking and strong typing.
-
-**Reproducible Research**
- Complete state serialization ensures exact reproducibility of scientific analyses.
-
-**Algorithm Flexibility**
- Compare different optimization approaches without changing your model code.
-
-**Extensible Architecture**
- Descriptor pattern makes it easy to create new parameter types and model components.
-
-Open Source & Cross-Platform
-============================
-
-EasyScience is free and open-source software with the source code openly shared on `GitHub repository `_.
-
-* **Cross-platform** - Written in Python and available for Windows, macOS, and Linux
-* **Well-tested** - Comprehensive test suite ensuring reliability across platforms
-* **Community-driven** - Open to contributions and feature requests
-* **Production-ready** - Used in multiple scientific applications worldwide
-
-
-Projects Built with EasyScience
-===============================
-
-EasyScience serves as the foundation for several scientific applications:
-
-**easyDiffraction**
- .. image:: https://raw.githubusercontent.com/easyScience/easyDiffractionWww/master/assets/img/card.png
- :target: https://easydiffraction.org
- :width: 300px
-
- Scientific software for modeling and analysis of neutron diffraction data, providing an intuitive interface for crystallographic refinement.
-
-**easyReflectometry**
- .. image:: https://raw.githubusercontent.com/easyScience/easyReflectometryWww/master/assets/img/card.png
- :target: https://easyreflectometry.org
- :width: 300px
-
- Scientific software for modeling and analysis of neutron reflectometry data, enabling detailed study of thin film structures.
-
-**Your Project Here**
- EasyScience's flexible architecture makes it ideal for building domain-specific scientific applications. The comprehensive API and documentation help you get started quickly.
-
-Quick Start
-===========
-
-Ready to begin? Here's how to get started:
-
-1. **Install EasyScience**: ``pip install easyscience``
-2. **Read the Overview**: Understand the core concepts and architecture
-3. **Try the Examples**: Work through practical fitting examples
-4. **Explore the API**: Dive into the comprehensive reference documentation
-
-.. code-block:: bash
-
- pip install easyscience
-
-Then explore the tutorials and examples to learn the key concepts!
-
-Documentation Guide
-===================
-
-.. toctree::
- :caption: Getting Started
- :maxdepth: 2
- :titlesonly:
-
- getting-started/overview
- getting-started/installation
-
-New to EasyScience? Start with the :doc:`getting-started/overview` to understand the core concepts, then follow the :doc:`getting-started/installation` guide.
-
-.. toctree::
- :caption: User Guides
- :maxdepth: 2
- :titlesonly:
-
- fitting/introduction
-
-Learn how to use EasyScience for scientific modeling and data fitting with comprehensive examples and best practices.
-
-.. toctree::
- :caption: API Reference
- :maxdepth: 2
- :titlesonly:
-
- reference/base
-
-Complete API documentation for all classes, methods, and functions in EasyScience.
-
-.. toctree::
- :caption: Examples
- :maxdepth: 2
- :titlesonly:
-
- base_examples/index
- fitting_examples/index
-
-Practical examples and tutorials demonstrating real-world usage patterns.
-
-Need Help?
-==========
-
-* **GitHub Issues**: Report bugs or request features on `GitHub Issues `_
-* **Discussions**: Ask questions in `GitHub Discussions `_
-* **API Reference**: Complete documentation of all classes and methods
-* **Examples**: Practical tutorials and code samples
-
-Contributing
-============
-
-EasyScience is developed openly and welcomes contributions! Whether you're fixing bugs, adding features, improving documentation, or sharing usage examples, your contributions help make scientific computing more accessible.
-
-Visit our `GitHub repository `_ to:
-
-* Report issues or suggest features
-* Submit pull requests
-* Join discussions about development
-* Help improve documentation
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
\ No newline at end of file
diff --git a/docs/src/reference/base.rst b/docs/src/reference/base.rst
deleted file mode 100644
index 1d91803c..00000000
--- a/docs/src/reference/base.rst
+++ /dev/null
@@ -1,323 +0,0 @@
-==============
-API Reference
-==============
-
-This reference provides detailed documentation for all EasyScience classes and functions.
-
-Core Variables and Descriptors
-==============================
-
-Descriptor Base Classes
------------------------
-
-.. autoclass:: easyscience.variable.DescriptorBase
- :members:
- :inherited-members:
- :show-inheritance:
-
-.. autoclass:: easyscience.variable.DescriptorNumber
- :members:
- :inherited-members:
- :show-inheritance:
-
-.. autoclass:: easyscience.variable.DescriptorArray
- :members:
- :inherited-members:
- :show-inheritance:
-
-.. autoclass:: easyscience.variable.DescriptorStr
- :members:
- :inherited-members:
- :show-inheritance:
-
-.. autoclass:: easyscience.variable.DescriptorBool
- :members:
- :inherited-members:
- :show-inheritance:
-
-.. autoclass:: easyscience.variable.DescriptorAnyType
- :members:
- :inherited-members:
- :show-inheritance:
-
-Parameters
-----------
-
-.. autoclass:: easyscience.variable.Parameter
- :members:
- :inherited-members:
- :show-inheritance:
-
- The Parameter class extends DescriptorNumber with fitting capabilities, bounds, and dependency relationships.
-
- **Key Methods:**
-
- .. automethod:: from_dependency
- :noindex:
- .. automethod:: make_dependent_on
- :noindex:
- .. automethod:: make_independent
- :noindex:
- .. automethod:: resolve_pending_dependencies
- :noindex:
-
-Base Classes for Models
-=======================
-
-BasedBase
----------
-
-.. autoclass:: easyscience.base_classes.BasedBase
- :members:
- :inherited-members:
- :show-inheritance:
-
- Base class providing serialization, global object registration, and interface management.
-
-ObjBase
--------
-
-.. autoclass:: easyscience.base_classes.ObjBase
- :members:
- :inherited-members:
- :show-inheritance:
-
- Container class for creating scientific models with parameters. All user-defined models should inherit from this class.
-
- **Key Methods:**
-
- .. automethod:: get_fit_parameters
- :noindex:
- .. automethod:: get_parameters
- :noindex:
- .. automethod:: _add_component
-
-Collections
------------
-
-.. autoclass:: easyscience.base_classes.CollectionBase
- :members:
- :inherited-members:
- :show-inheritance:
-
- Mutable sequence container for scientific objects with automatic parameter tracking.
-
-Fitting and Optimization
-=========================
-
-Fitter
--------
-
-.. autoclass:: easyscience.fitting.Fitter
- :members:
- :show-inheritance:
-
- Main fitting engine supporting multiple optimization backends.
-
- **Key Methods:**
-
- .. autoproperty:: fit
- :noindex:
- .. automethod:: switch_minimizer
- :noindex:
- .. automethod:: make_model
- .. automethod:: evaluate
-
-Available Minimizers
---------------------
-
-.. autoclass:: easyscience.fitting.AvailableMinimizers
- :members:
- :show-inheritance:
-
- Enumeration of available optimization backends.
-
-Fit Results
------------
-
-.. autoclass:: easyscience.fitting.FitResults
- :members:
- :show-inheritance:
-
- Container for fitting results including parameters, statistics, and diagnostics.
-
-Minimizer Base Classes
-----------------------
-
-.. autoclass:: easyscience.fitting.minimizers.MinimizerBase
- :members:
- :show-inheritance:
-
- Abstract base class for all minimizer implementations.
-
-.. autoclass:: easyscience.fitting.minimizers.LMFit
- :members:
- :show-inheritance:
-
- LMFit-based minimizer implementation.
-
-.. autoclass:: easyscience.fitting.minimizers.Bumps
- :members:
- :show-inheritance:
-
- Bumps-based minimizer implementation.
-
-.. autoclass:: easyscience.fitting.minimizers.DFO
- :members:
- :show-inheritance:
-
- DFO-LS-based minimizer implementation.
-
-Global State Management
-========================
-
-Global Object
--------------
-
-.. autoclass:: easyscience.global_object.GlobalObject
- :members:
- :show-inheritance:
-
- Singleton managing global state, logging, and object tracking.
-
-Object Map
-----------
-
-.. autoclass:: easyscience.global_object.Map
- :members:
- :show-inheritance:
-
- Graph-based registry for tracking object relationships and dependencies.
-
-Undo/Redo System
-----------------
-
-.. autoclass:: easyscience.global_object.undo_redo.UndoStack
- :members:
- :show-inheritance:
-
- Stack-based undo/redo system for parameter changes.
-
-Serialization and I/O
-=====================
-
-Serializer Components
----------------------
-
-.. autoclass:: easyscience.io.SerializerComponent
- :members:
- :show-inheritance:
-
- Base class providing serialization capabilities.
-
-.. autoclass:: easyscience.io.SerializerDict
- :members:
- :show-inheritance:
-
- Dictionary-based serialization implementation.
-
-.. autoclass:: easyscience.io.SerializerBase
- :members:
- :show-inheritance:
-
- Base serialization functionality.
-
-Models and Examples
-===================
-
-Polynomial Model
-----------------
-
-.. autoclass:: easyscience.models.Polynomial
- :members:
- :show-inheritance:
-
- Built-in polynomial model for demonstration and testing.
-
-Job Management
-==============
-
-Analysis and Experiments
-------------------------
-
-.. autoclass:: easyscience.job.AnalysisBase
- :members:
- :show-inheritance:
-
-.. autoclass:: easyscience.job.ExperimentBase
- :members:
- :show-inheritance:
-
-.. autoclass:: easyscience.job.JobBase
- :members:
- :show-inheritance:
-
-.. autoclass:: easyscience.job.TheoreticalModelBase
- :members:
- :show-inheritance:
-
-Utility Functions
-=================
-
-Decorators
-----------
-
-.. autofunction:: easyscience.global_object.undo_redo.property_stack
-
- Decorator for properties that should be tracked in the undo/redo system.
-
-Class Tools
------------
-
-.. autofunction:: easyscience.utils.classTools.addLoggedProp
-
- Utility for adding logged properties to classes.
-
-String Utilities
-----------------
-
-.. automodule:: easyscience.utils.string
- :members:
-
-Parameter Dependencies
------------------------
-
-.. autofunction:: easyscience.variable.parameter_dependency_resolver.resolve_all_parameter_dependencies
-
- Resolve all pending parameter dependencies after deserialization.
-
-.. autofunction:: easyscience.variable.parameter_dependency_resolver.get_parameters_with_pending_dependencies
-
- Find parameters that have unresolved dependencies.
-
-Constants and Enumerations
-===========================
-
-.. autodata:: easyscience.global_object
- :annotation: GlobalObject
-
- Global singleton instance managing application state.
-
-Exception Classes
-=================
-
-.. autoclass:: easyscience.fitting.minimizers.FitError
- :show-inheritance:
-
- Exception raised when fitting operations fail.
-
-.. autoclass:: scipp.UnitError
- :show-inheritance:
-
- Exception raised for unit-related errors (from scipp dependency).
-
-Usage Examples
-==============
-
-For practical usage examples and tutorials, see:
-
-* :doc:`../getting-started/overview` - Introduction and key concepts
-* :doc:`../fitting/introduction` - Comprehensive fitting guide
-* :doc:`../getting-started/installation` - Installation instructions
-
-The API reference covers all public classes and methods. For implementation details and advanced usage patterns, refer to the source code and test suites in the repository.
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
new file mode 100644
index 00000000..68d02641
--- /dev/null
+++ b/docs/stylesheets/extra.css
@@ -0,0 +1,4 @@
+.md-header__button.md-logo img {
+ height: 2rem;
+ width: auto;
+}
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 00000000..b274e615
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,88 @@
+site_name: EasyScience
+site_url: https://easyscience.github.io/EasyScience/
+repo_url: https://github.com/EasyScience/EasyScience
+repo_name: EasyScience/EasyScience
+edit_uri: edit/master/docs/
+
+theme:
+ name: material
+ custom_dir: overrides
+ features:
+ - navigation.tabs
+ - navigation.sections
+ - navigation.expand
+ - toc.integrate
+ - content.code.copy
+ palette:
+ - scheme: default
+ primary: indigo
+ accent: indigo
+ toggle:
+ icon: material/brightness-7
+ name: Switch to dark mode
+ - scheme: slate
+ primary: indigo
+ accent: indigo
+ toggle:
+ icon: material/brightness-4
+ name: Switch to light mode
+
+plugins:
+ - search
+ - mkdocstrings:
+ handlers:
+ python:
+ options:
+ docstring_style: numpy
+ show_source: true
+ show_root_heading: true
+ members_order: source
+ separate_signature: true
+ show_bases: true
+ paths: [src]
+ # Gallery plugin commented out - needs sphinx-gallery integration or alternative
+ # The examples can be manually added to docs/base_examples and docs/fitting_examples
+ - gallery:
+ examples_dirs:
+ - Examples/base
+ - Examples/fitting
+ gallery_dirs:
+ - docs/base_examples
+ - docs/fitting_examples
+ matplotlib_animations: true
+ image_scrapers: matplotlib
+ abort_on_example_error: false
+
+markdown_extensions:
+ - admonition
+ - pymdownx.details
+ - pymdownx.superfences
+ - pymdownx.highlight:
+ anchor_linenums: true
+ - pymdownx.inlinehilite
+ - pymdownx.snippets
+ - pymdownx.arithmatex:
+ generic: true
+ - attr_list
+ - md_in_html
+
+extra_css:
+ - stylesheets/extra.css
+
+extra_javascript:
+ - javascripts/mathjax.js
+ - https://polyfill.io/v3/polyfill.min.js?features=es6
+ - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
+
+nav:
+ - Home: index.md
+ - Getting Started:
+ - Overview: getting-started/overview.md
+ - Installation: getting-started/installation.md
+ - User Guides:
+ - Fitting Introduction: fitting/introduction.md
+ - API Reference:
+ - Base Classes: reference/base.md
+ - Examples:
+ - Base Examples: base_examples/index.md
+ - Fitting Examples: fitting_examples/index.md
diff --git a/overrides/partials/logo.html b/overrides/partials/logo.html
new file mode 100644
index 00000000..b4bfa2b2
--- /dev/null
+++ b/overrides/partials/logo.html
@@ -0,0 +1,3 @@
+
diff --git a/pixi.lock b/pixi.lock
index 00863b1e..3c1c7651 100644
--- a/pixi.lock
+++ b/pixi.lock
@@ -340,11 +340,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f7/0d/4764669bdf47bd472899b3d3db91fffbe925c8e3038ec591a2fd2ad6a14d/aiohttp-3.13.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/09/52/94108adfdd6e2ddf58be64f959a0b9c7d4ef2fa71086c38356d22dc501ea/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
@@ -354,6 +352,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/eb/95/7118e935b0b0bd3f94dfec2d852fd4e4f4f9757bdb49850519acd245cd3a/backrefs-6.1-py313-none-any.whl
- pypi: https://files.pythonhosted.org/packages/94/fe/3aed5d0be4d404d12d36ab97e2f1791424d9ca39c2f754a6285d59a3b01d/beautifulsoup4-4.14.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/99/37/e8730c3587a65eb5645d4aba2d27aae48e8003614d6aaf15dda67f702f1f/bidict-0.23.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl
@@ -365,6 +364,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/af/02/18785edcdf6266cdd6c6dc7635f1cbeefd9a5b4c3bb8aff8bd681e9dd095/codecov-2.1.13-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
@@ -378,8 +378,6 @@ environments:
- pypi: https://files.pythonhosted.org/packages/68/49/869b49db0bad6fba7c7471d612c356e745929d14e0de63acbc53e88f2a50/dfo_ls-1.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/a2/e9/90b7d243364d3dce38c8c2a1b8c103d7a8d1383c2b24c735fae0eee038dd/doc8-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6b/be/0f2f4a5e8adc114a02b63d92bf8edbfa24db6fc602fca83c885af2479e0e/editables-0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl
@@ -388,13 +386,14 @@ environments:
- pypi: https://files.pythonhosted.org/packages/2d/8b/371ab3cec97ee3fe1126b3406b7abd60c8fec8975fd79a3c75cdea0c3d83/fonttools-4.60.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9c/83/3b1d03d36f224edded98e9affd0467630fc09d766c0e56fb1498cbb04a9b/griffe-1.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d9/69/4402ea66272dacc10b298cca18ed73e1c0791ff2ae9ed218d3859f9698ac/h5py-3.15.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/04/35/aa8738d6674aba09d3f0c77a1c40aee1dbf10e1b26d03cbd987aa6642e86/hatchling-1.21.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl
@@ -418,11 +417,21 @@ environments:
- pypi: https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/38/7e/7b91c89a4cf0f543a83be978657afb20c86af6d725253e319589dcc4ce52/lmfit-1.3.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/22/ff/6425bf5c20d79aa5b959d1ce9e65f599632345391381c9a104133fe0b171/matplotlib-3.10.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/00/b3/f6aa253503b3147238747672322503b2b529f390861f6184838d18abd51a/mkdocs_gallery-0.10.4-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/04/87/eefe8d5e764f4cf50ed91b943f8e8f96b5efd65489d8303b7a36e2e79834/mkdocs_material-9.7.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/ec/fc/80aa31b79133634721cf7855d37b76ea49773599214896f2ff10be03de2a/mkdocstrings-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/81/06/c5f8deba7d2cbdfa7967a716ae801aa9ca5f734b8f54fd473ef77a088dbe/mkdocstrings_python-2.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/5b/69/93b34728cc386efdde0c342f8c680b9187dea7beb7adaf6b58a0713be101/mpld3-0.5.12-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/5d/ba/459f18c16f2b3fc1a1ca871f72f07d70c07bf768ad0a507a698b8052ac58/msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/c6/2d/f0b184fa88d6630aa267680bdb8623fb69cb0d024b8c6f0d23f9a0f406d3/multidict-6.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
@@ -431,10 +440,10 @@ environments:
- pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/42/0f/c76bf3dba22c73c38e9b1113b017cf163f7696f50e003404ec5ecdb1e8a6/nh3-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f5/10/ca162f45a102738958dcec8023062dad0cbc17d1ab99d68c4e4a6c45fb2b/numpy-2.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl
@@ -452,9 +461,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e7/d3/c622950d87a2ffd1654208733b5bd1c5645930014abed8f4c0d74863988b/pydata_sphinx_theme-0.15.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/46/a4/aa2bada4a2fd648f40f19affa55d2c01dc7ff5ea9cffd3dfdeb6114951db/pymdown_extensions-10.18-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/cc/cecf97be298bee2b2a37dd360618c819a2a7fd95251d8e480c1f0eb88f3b/pyproject_api-1.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
@@ -466,15 +475,13 @@ environments:
- pypi: https://files.pythonhosted.org/packages/cd/fa/1ef2f8537272a2f383d72b9301c3ef66a49710b3bb7dcb2bd138cf2920d1/python_socketio-5.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
- - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/af/63/ac52b32b33ae62f2076ed5c4f6b00e065e3ccbb2063e9a2e813b2bfc95bf/restructuredtext_lint-2.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b9/42/555b4ee17508beafac135c8b450816ace5a96194ce97fefc49d58e5652ea/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/13/ac/9b9fe63716af8bdfddfacd0882bc1586f29985d3b988b3c62ddce2e202c3/ruff-0.14.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/77/34/1956aed61c4abb91926f9513330afac4654cc2a711ecb73085dc4e2e5c1d/scipp-25.11.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
@@ -485,26 +492,15 @@ environments:
- pypi: https://files.pythonhosted.org/packages/52/59/0782e51887ac6b07ffd1570e0364cf901ebc36345fea669969d2084baebb/simple_websocket-1.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/31/53/136e9eca6e0b9dc0e1962e2c908fbea2e5ac000c2a2fbd9a35797958c48b/sphinx-8.2.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/05/f2/9657c98a66973b7c35bfd48ba65d1922860de9598fbb535cd96e3f58a908/sphinx_autodoc_typehints-3.5.2-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/51/9e/c41d68be04eef5b6202b468e0f90faf0c469f3a03353f2a218fd78279710/sphinx_book_theme-1.1.4-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/77/c7/52b48aec16b26c52aba854d03a3a31e0681150301dac1bea2243645a69e7/sphinx_gallery-0.19.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/fc/cc/e09c0d663a004945f82beecd4f147053567910479314e8d01ba71e5d5dea/tox-4.32.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/fd/9e/8d50f3b3fc4af8c73154f64d4a2293bfa2d517a19000e70ef2d614254084/tox_gh_actions-3.5.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/49/f6/73c4aa003d1237ee9bea8a46f49dc38c45dfe95af4f0da7e60678d388011/trove_classifiers-2025.11.14.15-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
@@ -513,6 +509,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
@@ -536,11 +533,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/db/ed/1f59215ab6853fbaa5c8495fa6cbc39edfc93553426152b75d82a5f32b76/aiohttp-3.13.2-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl
@@ -551,6 +546,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/eb/95/7118e935b0b0bd3f94dfec2d852fd4e4f4f9757bdb49850519acd245cd3a/backrefs-6.1-py313-none-any.whl
- pypi: https://files.pythonhosted.org/packages/94/fe/3aed5d0be4d404d12d36ab97e2f1791424d9ca39c2f754a6285d59a3b01d/beautifulsoup4-4.14.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/99/37/e8730c3587a65eb5645d4aba2d27aae48e8003614d6aaf15dda67f702f1f/bidict-0.23.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl
@@ -562,6 +558,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl
+ - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/af/02/18785edcdf6266cdd6c6dc7635f1cbeefd9a5b4c3bb8aff8bd681e9dd095/codecov-2.1.13-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
@@ -575,8 +572,6 @@ environments:
- pypi: https://files.pythonhosted.org/packages/68/49/869b49db0bad6fba7c7471d612c356e745929d14e0de63acbc53e88f2a50/dfo_ls-1.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/a2/e9/90b7d243364d3dce38c8c2a1b8c103d7a8d1383c2b24c735fae0eee038dd/doc8-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6b/be/0f2f4a5e8adc114a02b63d92bf8edbfa24db6fc602fca83c885af2479e0e/editables-0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl
@@ -585,13 +580,14 @@ environments:
- pypi: https://files.pythonhosted.org/packages/d6/8a/de9cc0540f542963ba5e8f3a1f6ad48fa211badc3177783b9d5cadf79b5d/fonttools-4.60.1-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9c/83/3b1d03d36f224edded98e9affd0467630fc09d766c0e56fb1498cbb04a9b/griffe-1.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/88/b3/40207e0192415cbff7ea1d37b9f24b33f6d38a5a2f5d18a678de78f967ae/h5py-3.15.1-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/04/35/aa8738d6674aba09d3f0c77a1c40aee1dbf10e1b26d03cbd987aa6642e86/hatchling-1.21.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl
@@ -615,11 +611,21 @@ environments:
- pypi: https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/38/7e/7b91c89a4cf0f543a83be978657afb20c86af6d725253e319589dcc4ce52/lmfit-1.3.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/02/9c/207547916a02c78f6bdd83448d9b21afbc42f6379ed887ecf610984f3b4e/matplotlib-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/00/b3/f6aa253503b3147238747672322503b2b529f390861f6184838d18abd51a/mkdocs_gallery-0.10.4-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/04/87/eefe8d5e764f4cf50ed91b943f8e8f96b5efd65489d8303b7a36e2e79834/mkdocs_material-9.7.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/ec/fc/80aa31b79133634721cf7855d37b76ea49773599214896f2ff10be03de2a/mkdocstrings-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/81/06/c5f8deba7d2cbdfa7967a716ae801aa9ca5f734b8f54fd473ef77a088dbe/mkdocstrings_python-2.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/5b/69/93b34728cc386efdde0c342f8c680b9187dea7beb7adaf6b58a0713be101/mpld3-0.5.12-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6b/31/b46518ecc604d7edf3a4f94cb3bf021fc62aa301f0cb849936968164ef23/msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/91/1c/eb97db117a1ebe46d457a3d235a7b9d2e6dcab174f42d1b67663dd9e5371/multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl
@@ -628,10 +634,10 @@ environments:
- pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/b6/3e/f5a5cc2885c24be13e9b937441bd16a012ac34a657fe05e58927e8af8b7a/nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/db/69/9cde09f36da4b5a505341180a3f2e6fadc352fd4d2b7096ce9778db83f1a/numpy-2.3.5-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl
@@ -649,9 +655,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e7/d3/c622950d87a2ffd1654208733b5bd1c5645930014abed8f4c0d74863988b/pydata_sphinx_theme-0.15.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/46/a4/aa2bada4a2fd648f40f19affa55d2c01dc7ff5ea9cffd3dfdeb6114951db/pymdown_extensions-10.18-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/cc/cecf97be298bee2b2a37dd360618c819a2a7fd95251d8e480c1f0eb88f3b/pyproject_api-1.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
@@ -663,15 +669,13 @@ environments:
- pypi: https://files.pythonhosted.org/packages/cd/fa/1ef2f8537272a2f383d72b9301c3ef66a49710b3bb7dcb2bd138cf2920d1/python_socketio-5.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl
- - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/af/63/ac52b32b33ae62f2076ed5c4f6b00e065e3ccbb2063e9a2e813b2bfc95bf/restructuredtext_lint-2.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/fd/d9/c5de60d9d371bbb186c3e9bf75f4fc5665e11117a25a06a6b2e0afb7380e/rpds_py-0.29.0-cp313-cp313-macosx_10_12_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/36/6a/ad66d0a3315d6327ed6b01f759d83df3c4d5f86c30462121024361137b6a/ruff-0.14.6-py3-none-macosx_10_12_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/71/f2/18d5be10ac890ce7490451eb55d41bf9d96e481751362a30ed1a8bc176fa/scipp-25.11.0-cp313-cp313-macosx_11_0_x86_64.whl
@@ -682,26 +686,15 @@ environments:
- pypi: https://files.pythonhosted.org/packages/52/59/0782e51887ac6b07ffd1570e0364cf901ebc36345fea669969d2084baebb/simple_websocket-1.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/31/53/136e9eca6e0b9dc0e1962e2c908fbea2e5ac000c2a2fbd9a35797958c48b/sphinx-8.2.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/05/f2/9657c98a66973b7c35bfd48ba65d1922860de9598fbb535cd96e3f58a908/sphinx_autodoc_typehints-3.5.2-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/51/9e/c41d68be04eef5b6202b468e0f90faf0c469f3a03353f2a218fd78279710/sphinx_book_theme-1.1.4-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/77/c7/52b48aec16b26c52aba854d03a3a31e0681150301dac1bea2243645a69e7/sphinx_gallery-0.19.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/fc/cc/e09c0d663a004945f82beecd4f147053567910479314e8d01ba71e5d5dea/tox-4.32.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/fd/9e/8d50f3b3fc4af8c73154f64d4a2293bfa2d517a19000e70ef2d614254084/tox_gh_actions-3.5.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/49/f6/73c4aa003d1237ee9bea8a46f49dc38c45dfe95af4f0da7e60678d388011/trove_classifiers-2025.11.14.15-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
@@ -710,6 +703,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl
- pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
@@ -734,11 +728,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/68/7b/fe0fe0f5e05e13629d893c760465173a15ad0039c0a5b0d0040995c8075e/aiohttp-3.13.2-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl
@@ -749,6 +741,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/eb/95/7118e935b0b0bd3f94dfec2d852fd4e4f4f9757bdb49850519acd245cd3a/backrefs-6.1-py313-none-any.whl
- pypi: https://files.pythonhosted.org/packages/94/fe/3aed5d0be4d404d12d36ab97e2f1791424d9ca39c2f754a6285d59a3b01d/beautifulsoup4-4.14.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/99/37/e8730c3587a65eb5645d4aba2d27aae48e8003614d6aaf15dda67f702f1f/bidict-0.23.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl
@@ -760,6 +753,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl
+ - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/af/02/18785edcdf6266cdd6c6dc7635f1cbeefd9a5b4c3bb8aff8bd681e9dd095/codecov-2.1.13-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
@@ -773,8 +767,6 @@ environments:
- pypi: https://files.pythonhosted.org/packages/68/49/869b49db0bad6fba7c7471d612c356e745929d14e0de63acbc53e88f2a50/dfo_ls-1.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/a2/e9/90b7d243364d3dce38c8c2a1b8c103d7a8d1383c2b24c735fae0eee038dd/doc8-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6b/be/0f2f4a5e8adc114a02b63d92bf8edbfa24db6fc602fca83c885af2479e0e/editables-0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl
@@ -783,13 +775,14 @@ environments:
- pypi: https://files.pythonhosted.org/packages/7c/5b/cdd2c612277b7ac7ec8c0c9bc41812c43dc7b2d5f2b0897e15fdf5a1f915/fonttools-4.60.1-cp313-cp313-macosx_10_13_universal2.whl
- pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl
+ - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9c/83/3b1d03d36f224edded98e9affd0467630fc09d766c0e56fb1498cbb04a9b/griffe-1.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/31/96/ba99a003c763998035b0de4c299598125df5fc6c9ccf834f152ddd60e0fb/h5py-3.15.1-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/04/35/aa8738d6674aba09d3f0c77a1c40aee1dbf10e1b26d03cbd987aa6642e86/hatchling-1.21.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl
@@ -813,11 +806,21 @@ environments:
- pypi: https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/38/7e/7b91c89a4cf0f543a83be978657afb20c86af6d725253e319589dcc4ce52/lmfit-1.3.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/bc/d0/b3d3338d467d3fc937f0bb7f256711395cae6f78e22cef0656159950adf0/matplotlib-3.10.7-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/00/b3/f6aa253503b3147238747672322503b2b529f390861f6184838d18abd51a/mkdocs_gallery-0.10.4-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/04/87/eefe8d5e764f4cf50ed91b943f8e8f96b5efd65489d8303b7a36e2e79834/mkdocs_material-9.7.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/ec/fc/80aa31b79133634721cf7855d37b76ea49773599214896f2ff10be03de2a/mkdocstrings-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/81/06/c5f8deba7d2cbdfa7967a716ae801aa9ca5f734b8f54fd473ef77a088dbe/mkdocstrings_python-2.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/5b/69/93b34728cc386efdde0c342f8c680b9187dea7beb7adaf6b58a0713be101/mpld3-0.5.12-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/92/dc/c385f38f2c2433333345a82926c6bfa5ecfff3ef787201614317b58dd8be/msgpack-1.1.2-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/f1/d8/6c3442322e41fb1dd4de8bd67bfd11cd72352ac131f6368315617de752f1/multidict-6.7.0-cp313-cp313-macosx_11_0_arm64.whl
@@ -826,10 +829,10 @@ environments:
- pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/b6/3e/f5a5cc2885c24be13e9b937441bd16a012ac34a657fe05e58927e8af8b7a/nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/79/fb/f505c95ceddd7027347b067689db71ca80bd5ecc926f913f1a23e65cf09b/numpy-2.3.5-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl
@@ -847,9 +850,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e7/d3/c622950d87a2ffd1654208733b5bd1c5645930014abed8f4c0d74863988b/pydata_sphinx_theme-0.15.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/46/a4/aa2bada4a2fd648f40f19affa55d2c01dc7ff5ea9cffd3dfdeb6114951db/pymdown_extensions-10.18-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/cc/cecf97be298bee2b2a37dd360618c819a2a7fd95251d8e480c1f0eb88f3b/pyproject_api-1.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
@@ -861,15 +864,13 @@ environments:
- pypi: https://files.pythonhosted.org/packages/cd/fa/1ef2f8537272a2f383d72b9301c3ef66a49710b3bb7dcb2bd138cf2920d1/python_socketio-5.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl
+ - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl
- - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/af/63/ac52b32b33ae62f2076ed5c4f6b00e065e3ccbb2063e9a2e813b2bfc95bf/restructuredtext_lint-2.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b3/b3/0860cdd012291dc21272895ce107f1e98e335509ba986dd83d72658b82b9/rpds_py-0.29.0-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/a3/9d/dae6db96df28e0a15dea8e986ee393af70fc97fd57669808728080529c37/ruff-0.14.6-py3-none-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/64/7c/d8a343b0a622987335a1ac848084079c47c21e44fcc450f9c145b11a56f6/scipp-25.11.0-cp313-cp313-macosx_11_0_arm64.whl
@@ -880,26 +881,15 @@ environments:
- pypi: https://files.pythonhosted.org/packages/52/59/0782e51887ac6b07ffd1570e0364cf901ebc36345fea669969d2084baebb/simple_websocket-1.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/31/53/136e9eca6e0b9dc0e1962e2c908fbea2e5ac000c2a2fbd9a35797958c48b/sphinx-8.2.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/05/f2/9657c98a66973b7c35bfd48ba65d1922860de9598fbb535cd96e3f58a908/sphinx_autodoc_typehints-3.5.2-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/51/9e/c41d68be04eef5b6202b468e0f90faf0c469f3a03353f2a218fd78279710/sphinx_book_theme-1.1.4-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/77/c7/52b48aec16b26c52aba854d03a3a31e0681150301dac1bea2243645a69e7/sphinx_gallery-0.19.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl
- pypi: https://files.pythonhosted.org/packages/fc/cc/e09c0d663a004945f82beecd4f147053567910479314e8d01ba71e5d5dea/tox-4.32.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/fd/9e/8d50f3b3fc4af8c73154f64d4a2293bfa2d517a19000e70ef2d614254084/tox_gh_actions-3.5.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/49/f6/73c4aa003d1237ee9bea8a46f49dc38c45dfe95af4f0da7e60678d388011/trove_classifiers-2025.11.14.15-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
@@ -908,6 +898,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl
- pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
@@ -933,11 +924,9 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_32.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda
- - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/5d/28/a8a9fc6957b2cee8902414e41816b5ab5536ecf43c3b1843c10e82c559b2/aiohttp-3.13.2-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/c6/a759ece8f1829d1f162261226fbfd2c6832b3ff7657384045286d2afa384/argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl
@@ -947,6 +936,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/eb/95/7118e935b0b0bd3f94dfec2d852fd4e4f4f9757bdb49850519acd245cd3a/backrefs-6.1-py313-none-any.whl
- pypi: https://files.pythonhosted.org/packages/94/fe/3aed5d0be4d404d12d36ab97e2f1791424d9ca39c2f754a6285d59a3b01d/beautifulsoup4-4.14.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/99/37/e8730c3587a65eb5645d4aba2d27aae48e8003614d6aaf15dda67f702f1f/bidict-0.23.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl
@@ -958,6 +948,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl
+ - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/af/02/18785edcdf6266cdd6c6dc7635f1cbeefd9a5b4c3bb8aff8bd681e9dd095/codecov-2.1.13-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
@@ -971,8 +962,6 @@ environments:
- pypi: https://files.pythonhosted.org/packages/68/49/869b49db0bad6fba7c7471d612c356e745929d14e0de63acbc53e88f2a50/dfo_ls-1.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/a2/e9/90b7d243364d3dce38c8c2a1b8c103d7a8d1383c2b24c735fae0eee038dd/doc8-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6b/be/0f2f4a5e8adc114a02b63d92bf8edbfa24db6fc602fca83c885af2479e0e/editables-0.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl
@@ -981,13 +970,14 @@ environments:
- pypi: https://files.pythonhosted.org/packages/75/4d/b022c1577807ce8b31ffe055306ec13a866f2337ecee96e75b24b9b753ea/fonttools-4.60.1-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl
+ - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9c/83/3b1d03d36f224edded98e9affd0467630fc09d766c0e56fb1498cbb04a9b/griffe-1.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e5/ea/fbb258a98863f99befb10ed727152b4ae659f322e1d9c0576f8a62754e81/h5py-3.15.1-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/04/35/aa8738d6674aba09d3f0c77a1c40aee1dbf10e1b26d03cbd987aa6642e86/hatchling-1.21.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl
@@ -1011,11 +1001,21 @@ environments:
- pypi: https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/38/7e/7b91c89a4cf0f543a83be978657afb20c86af6d725253e319589dcc4ce52/lmfit-1.3.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/e1/b6/23064a96308b9aeceeffa65e96bcde459a2ea4934d311dee20afde7407a0/matplotlib-3.10.7-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/00/b3/f6aa253503b3147238747672322503b2b529f390861f6184838d18abd51a/mkdocs_gallery-0.10.4-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/04/87/eefe8d5e764f4cf50ed91b943f8e8f96b5efd65489d8303b7a36e2e79834/mkdocs_material-9.7.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/ec/fc/80aa31b79133634721cf7855d37b76ea49773599214896f2ff10be03de2a/mkdocstrings-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/81/06/c5f8deba7d2cbdfa7967a716ae801aa9ca5f734b8f54fd473ef77a088dbe/mkdocstrings_python-2.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/5b/69/93b34728cc386efdde0c342f8c680b9187dea7beb7adaf6b58a0713be101/mpld3-0.5.12-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/74/07/1ed8277f8653c40ebc65985180b007879f6a836c525b3885dcc6448ae6cb/msgpack-1.1.2-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/32/31/75c59e7d3b4205075b4c183fa4ca398a2daf2303ddf616b04ae6ef55cffe/multidict-6.7.0-cp313-cp313-win_amd64.whl
@@ -1024,10 +1024,10 @@ environments:
- pypi: https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/64/9a/1a1c154f10a575d20dd634e5697805e589bbdb7673a0ad00e8da90044ba7/nh3-0.3.2-cp38-abi3-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0c/88/e2eaa6cffb115b85ed7c7c87775cb8bcf0816816bc98ca8dbfa2ee33fe6e/numpy-2.3.5-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl
@@ -1043,9 +1043,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e7/d3/c622950d87a2ffd1654208733b5bd1c5645930014abed8f4c0d74863988b/pydata_sphinx_theme-0.15.4-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/46/a4/aa2bada4a2fd648f40f19affa55d2c01dc7ff5ea9cffd3dfdeb6114951db/pymdown_extensions-10.18-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/cc/cecf97be298bee2b2a37dd360618c819a2a7fd95251d8e480c1f0eb88f3b/pyproject_api-1.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
@@ -1058,15 +1058,13 @@ environments:
- pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/fc/19/b757fe28008236a4a713e813283721b8a40aa60cd7d3f83549f2e25a3155/pywinpty-3.0.2-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl
+ - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl
- - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/af/63/ac52b32b33ae62f2076ed5c4f6b00e065e3ccbb2063e9a2e813b2bfc95bf/restructuredtext_lint-2.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3c/6b/0229d3bed4ddaa409e6d90b0ae967ed4380e4bdd0dad6e59b92c17d42457/rpds_py-0.29.0-cp313-cp313-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/fb/02/82240553b77fd1341f80ebb3eaae43ba011c7a91b4224a9f317d8e6591af/ruff-0.14.6-py3-none-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/f6/f3/9d1bb423a2dc0bbebfc98191095dd410a1268397b9c692d76a3ea971c790/scipp-25.11.0-cp313-cp313-win_amd64.whl
@@ -1077,26 +1075,15 @@ environments:
- pypi: https://files.pythonhosted.org/packages/52/59/0782e51887ac6b07ffd1570e0364cf901ebc36345fea669969d2084baebb/simple_websocket-1.1.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/31/53/136e9eca6e0b9dc0e1962e2c908fbea2e5ac000c2a2fbd9a35797958c48b/sphinx-8.2.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/05/f2/9657c98a66973b7c35bfd48ba65d1922860de9598fbb535cd96e3f58a908/sphinx_autodoc_typehints-3.5.2-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/51/9e/c41d68be04eef5b6202b468e0f90faf0c469f3a03353f2a218fd78279710/sphinx_book_theme-1.1.4-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/77/c7/52b48aec16b26c52aba854d03a3a31e0681150301dac1bea2243645a69e7/sphinx_gallery-0.19.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/fc/cc/e09c0d663a004945f82beecd4f147053567910479314e8d01ba71e5d5dea/tox-4.32.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/fd/9e/8d50f3b3fc4af8c73154f64d4a2293bfa2d517a19000e70ef2d614254084/tox_gh_actions-3.5.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/49/f6/73c4aa003d1237ee9bea8a46f49dc38c45dfe95af4f0da7e60678d388011/trove_classifiers-2025.11.14.15-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
@@ -1105,6 +1092,7 @@ environments:
- pypi: https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl
- pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
@@ -1134,21 +1122,6 @@ packages:
purls: []
size: 23621
timestamp: 1650670423406
-- pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl
- name: accessible-pygments
- version: 0.0.5
- sha256: 88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7
- requires_dist:
- - pygments>=1.5
- - pillow ; extra == 'dev'
- - pkginfo>=1.10 ; extra == 'dev'
- - playwright ; extra == 'dev'
- - pre-commit ; extra == 'dev'
- - setuptools ; extra == 'dev'
- - twine>=5.0 ; extra == 'dev'
- - hypothesis ; extra == 'tests'
- - pytest ; extra == 'tests'
- requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl
name: aiohappyeyeballs
version: 2.6.1
@@ -1234,11 +1207,6 @@ packages:
- frozenlist>=1.1.0
- typing-extensions>=4.2 ; python_full_version < '3.13'
requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl
- name: alabaster
- version: 1.0.0
- sha256: fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b
- requires_python: '>=3.10'
- pypi: https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl
name: anyio
version: 4.11.0
@@ -1366,6 +1334,13 @@ packages:
- pytz ; extra == 'dev'
- setuptools ; extra == 'dev'
requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/eb/95/7118e935b0b0bd3f94dfec2d852fd4e4f4f9757bdb49850519acd245cd3a/backrefs-6.1-py313-none-any.whl
+ name: backrefs
+ version: '6.1'
+ sha256: 4c9d3dc1e2e558965202c012304f33d4e0e477e1c103663fd2c3cc9bb18b0d05
+ requires_dist:
+ - regex ; extra == 'extras'
+ requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/94/fe/3aed5d0be4d404d12d36ab97e2f1791424d9ca39c2f754a6285d59a3b01d/beautifulsoup4-4.14.2-py3-none-any.whl
name: beautifulsoup4
version: 4.14.2
@@ -1559,6 +1534,13 @@ packages:
version: 3.4.4
sha256: a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894
requires_python: '>=3.7'
+- pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
+ name: click
+ version: 8.3.1
+ sha256: 981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6
+ requires_dist:
+ - colorama ; sys_platform == 'win32'
+ requires_python: '>=3.10'
- pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl
name: cloudpickle
version: 3.1.2
@@ -1771,26 +1753,10 @@ packages:
name: distlib
version: 0.4.0
sha256: 9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16
-- pypi: https://files.pythonhosted.org/packages/a2/e9/90b7d243364d3dce38c8c2a1b8c103d7a8d1383c2b24c735fae0eee038dd/doc8-2.0.0-py3-none-any.whl
- name: doc8
- version: 2.0.0
- sha256: 9862710027f793c25f9b1899150660e4bf1d4c9a6738742e71f32011e2e3f590
- requires_dist:
- - docutils>=0.19,<=0.21.2
- - restructuredtext-lint>=0.7
- - stevedore
- - tomli ; python_full_version < '3.11'
- - pygments
- requires_python: '>=3.10'
-- pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl
- name: docutils
- version: 0.21.2
- sha256: dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2
- requires_python: '>=3.9'
- pypi: ./
name: easyscience
- version: 2.0.0
- sha256: 3e1433dc7b46ccbb4a5d63a22de63b3113897cd66b602a368db0c08b09b3659c
+ version: 2.1.0
+ sha256: cd57ac2c61d499cf0162d47794f65bd0dbe1a39e85be9a9c814a417df821ae63
requires_dist:
- asteval
- bumps
@@ -1811,11 +1777,10 @@ packages:
- pytest-cov ; extra == 'dev'
- ruff ; extra == 'dev'
- tox-gh-actions ; extra == 'dev'
- - doc8 ; extra == 'docs'
- - readme-renderer ; extra == 'docs'
- - sphinx-autodoc-typehints ; extra == 'docs'
- - sphinx-book-theme ; extra == 'docs'
- - sphinx-gallery ; extra == 'docs'
+ - mkdocs ; extra == 'docs'
+ - mkdocs-gallery ; extra == 'docs'
+ - mkdocs-material ; extra == 'docs'
+ - mkdocstrings[python] ; extra == 'docs'
- toml ; extra == 'docs'
requires_python: '>=3.11'
editable: true
@@ -2027,6 +1992,26 @@ packages:
version: 1.8.0
sha256: 878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231
requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
+ name: ghp-import
+ version: 2.1.0
+ sha256: 8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619
+ requires_dist:
+ - python-dateutil>=2.8.1
+ - twine ; extra == 'dev'
+ - markdown ; extra == 'dev'
+ - flake8 ; extra == 'dev'
+ - wheel ; extra == 'dev'
+- pypi: https://files.pythonhosted.org/packages/9c/83/3b1d03d36f224edded98e9affd0467630fc09d766c0e56fb1498cbb04a9b/griffe-1.15.0-py3-none-any.whl
+ name: griffe
+ version: 1.15.0
+ sha256: 6f6762661949411031f5fcda9593f586e6ce8340f0ba88921a0f2ef7a81eb9a3
+ requires_dist:
+ - colorama>=0.4
+ - pip>=24.0 ; extra == 'pypi'
+ - platformdirs>=4.2 ; extra == 'pypi'
+ - wheel>=0.42 ; extra == 'pypi'
+ requires_python: '>=3.10'
- pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
name: h11
version: 0.16.0
@@ -2134,11 +2119,6 @@ packages:
- pytest>=8.3.2 ; extra == 'all'
- flake8>=7.1.1 ; extra == 'all'
requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl
- name: imagesize
- version: 1.4.1
- sha256: 0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b
- requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*'
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
name: iniconfig
version: 2.3.0
@@ -3028,6 +3008,21 @@ packages:
- pytest-cov ; extra == 'test'
- lmfit[dev,doc,test] ; extra == 'all'
requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
+ name: markdown
+ version: '3.10'
+ sha256: b5b99d6951e2e4948d939255596523444c0e677c669700b1d17aa4a8a464cb7c
+ requires_dist:
+ - coverage ; extra == 'testing'
+ - pyyaml ; extra == 'testing'
+ - mkdocs>=1.6 ; extra == 'docs'
+ - mkdocs-nature>=0.6 ; extra == 'docs'
+ - mdx-gh-links>=0.2 ; extra == 'docs'
+ - mkdocstrings[python] ; extra == 'docs'
+ - mkdocs-gen-files ; extra == 'docs'
+ - mkdocs-section-index ; extra == 'docs'
+ - mkdocs-literate-nav ; extra == 'docs'
+ requires_python: '>=3.10'
- pypi: https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl
name: markupsafe
version: 3.0.3
@@ -3141,6 +3136,11 @@ packages:
version: 0.7.0
sha256: 6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e
requires_python: '>=3.6'
+- pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
+ name: mergedeep
+ version: 1.3.4
+ sha256: 70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307
+ requires_python: '>=3.6'
- pypi: https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl
name: mistune
version: 3.1.4
@@ -3148,6 +3148,124 @@ packages:
requires_dist:
- typing-extensions ; python_full_version < '3.11'
requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl
+ name: mkdocs
+ version: 1.6.1
+ sha256: db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e
+ requires_dist:
+ - click>=7.0
+ - colorama>=0.4 ; sys_platform == 'win32'
+ - ghp-import>=1.0
+ - importlib-metadata>=4.4 ; python_full_version < '3.10'
+ - jinja2>=2.11.1
+ - markdown>=3.3.6
+ - markupsafe>=2.0.1
+ - mergedeep>=1.3.4
+ - mkdocs-get-deps>=0.2.0
+ - packaging>=20.5
+ - pathspec>=0.11.1
+ - pyyaml-env-tag>=0.1
+ - pyyaml>=5.1
+ - watchdog>=2.0
+ - babel>=2.9.0 ; extra == 'i18n'
+ - babel==2.9.0 ; extra == 'min-versions'
+ - click==7.0 ; extra == 'min-versions'
+ - colorama==0.4 ; sys_platform == 'win32' and extra == 'min-versions'
+ - ghp-import==1.0 ; extra == 'min-versions'
+ - importlib-metadata==4.4 ; python_full_version < '3.10' and extra == 'min-versions'
+ - jinja2==2.11.1 ; extra == 'min-versions'
+ - markdown==3.3.6 ; extra == 'min-versions'
+ - markupsafe==2.0.1 ; extra == 'min-versions'
+ - mergedeep==1.3.4 ; extra == 'min-versions'
+ - mkdocs-get-deps==0.2.0 ; extra == 'min-versions'
+ - packaging==20.5 ; extra == 'min-versions'
+ - pathspec==0.11.1 ; extra == 'min-versions'
+ - pyyaml-env-tag==0.1 ; extra == 'min-versions'
+ - pyyaml==5.1 ; extra == 'min-versions'
+ - watchdog==2.0 ; extra == 'min-versions'
+ requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
+ name: mkdocs-autorefs
+ version: 1.4.3
+ sha256: 469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9
+ requires_dist:
+ - markdown>=3.3
+ - markupsafe>=2.0.1
+ - mkdocs>=1.1
+ requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/00/b3/f6aa253503b3147238747672322503b2b529f390861f6184838d18abd51a/mkdocs_gallery-0.10.4-py2.py3-none-any.whl
+ name: mkdocs-gallery
+ version: 0.10.4
+ sha256: 8669d162b412714c52792f2959d4d211bf92bf5f820f5916c0686ff1ccd89806
+ requires_dist:
+ - mkdocs>=1,<2
+ - mkdocs-material
+ - tqdm
+ - packaging
+- pypi: https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl
+ name: mkdocs-get-deps
+ version: 0.2.0
+ sha256: 2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134
+ requires_dist:
+ - importlib-metadata>=4.3 ; python_full_version < '3.10'
+ - mergedeep>=1.3.4
+ - platformdirs>=2.2.0
+ - pyyaml>=5.1
+ requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/04/87/eefe8d5e764f4cf50ed91b943f8e8f96b5efd65489d8303b7a36e2e79834/mkdocs_material-9.7.0-py3-none-any.whl
+ name: mkdocs-material
+ version: 9.7.0
+ sha256: da2866ea53601125ff5baa8aa06404c6e07af3c5ce3d5de95e3b52b80b442887
+ requires_dist:
+ - babel>=2.10
+ - backrefs>=5.7.post1
+ - colorama>=0.4
+ - jinja2>=3.1
+ - markdown>=3.2
+ - mkdocs-material-extensions>=1.3
+ - mkdocs>=1.6
+ - paginate>=0.5
+ - pygments>=2.16
+ - pymdown-extensions>=10.2
+ - requests>=2.26
+ - mkdocs-git-committers-plugin-2>=1.1,<3 ; extra == 'git'
+ - mkdocs-git-revision-date-localized-plugin~=1.2,>=1.2.4 ; extra == 'git'
+ - cairosvg~=2.6 ; extra == 'imaging'
+ - pillow>=10.2,<12.0 ; extra == 'imaging'
+ - mkdocs-minify-plugin~=0.7 ; extra == 'recommended'
+ - mkdocs-redirects~=1.2 ; extra == 'recommended'
+ - mkdocs-rss-plugin~=1.6 ; extra == 'recommended'
+ requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
+ name: mkdocs-material-extensions
+ version: 1.3.1
+ sha256: adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31
+ requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/ec/fc/80aa31b79133634721cf7855d37b76ea49773599214896f2ff10be03de2a/mkdocstrings-1.0.0-py3-none-any.whl
+ name: mkdocstrings
+ version: 1.0.0
+ sha256: 4c50eb960bff6e05dfc631f6bc00dfabffbcb29c5ff25f676d64daae05ed82fa
+ requires_dist:
+ - jinja2>=3.1
+ - markdown>=3.6
+ - markupsafe>=1.1
+ - mkdocs>=1.6
+ - mkdocs-autorefs>=1.4
+ - pymdown-extensions>=6.3
+ - mkdocstrings-crystal>=0.3.4 ; extra == 'crystal'
+ - mkdocstrings-python-legacy>=0.2.1 ; extra == 'python-legacy'
+ - mkdocstrings-python>=1.16.2 ; extra == 'python'
+ requires_python: '>=3.10'
+- pypi: https://files.pythonhosted.org/packages/81/06/c5f8deba7d2cbdfa7967a716ae801aa9ca5f734b8f54fd473ef77a088dbe/mkdocstrings_python-2.0.1-py3-none-any.whl
+ name: mkdocstrings-python
+ version: 2.0.1
+ sha256: 66ecff45c5f8b71bf174e11d49afc845c2dfc7fc0ab17a86b6b337e0f24d8d90
+ requires_dist:
+ - mkdocstrings>=0.30
+ - mkdocs-autorefs>=1.4
+ - griffe>=1.13
+ - typing-extensions>=4.0 ; python_full_version < '3.11'
+ requires_python: '>=3.10'
- pypi: https://files.pythonhosted.org/packages/5b/69/93b34728cc386efdde0c342f8c680b9187dea7beb7adaf6b58a0713be101/mpld3-0.5.12-py3-none-any.whl
name: mpld3
version: 0.5.12
@@ -3362,21 +3480,6 @@ packages:
version: 1.6.0
sha256: 87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c
requires_python: '>=3.5'
-- pypi: https://files.pythonhosted.org/packages/42/0f/c76bf3dba22c73c38e9b1113b017cf163f7696f50e003404ec5ecdb1e8a6/nh3-0.3.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- name: nh3
- version: 0.3.2
- sha256: 7bb18403f02b655a1bbe4e3a4696c2ae1d6ae8f5991f7cacb684b1ae27e6c9f7
- requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/64/9a/1a1c154f10a575d20dd634e5697805e589bbdb7673a0ad00e8da90044ba7/nh3-0.3.2-cp38-abi3-win_amd64.whl
- name: nh3
- version: 0.3.2
- sha256: 562da3dca7a17f9077593214a9781a94b8d76de4f158f8c895e62f09573945fe
- requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/b6/3e/f5a5cc2885c24be13e9b937441bd16a012ac34a657fe05e58927e8af8b7a/nh3-0.3.2-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- name: nh3
- version: 0.3.2
- sha256: 7064ccf5ace75825bd7bf57859daaaf16ed28660c1c6b306b649a9eda4b54b1e
- requires_python: '>=3.8'
- pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl
name: notebook-shim
version: 0.2.4
@@ -3460,6 +3563,14 @@ packages:
version: '25.0'
sha256: 29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484
requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
+ name: paginate
+ version: 0.5.7
+ sha256: b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591
+ requires_dist:
+ - pytest ; extra == 'dev'
+ - tox ; extra == 'dev'
+ - black ; extra == 'lint'
- pypi: https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
name: pandas
version: 2.3.3
@@ -4276,59 +4387,6 @@ packages:
version: '2.23'
sha256: e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934
requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/e7/d3/c622950d87a2ffd1654208733b5bd1c5645930014abed8f4c0d74863988b/pydata_sphinx_theme-0.15.4-py3-none-any.whl
- name: pydata-sphinx-theme
- version: 0.15.4
- sha256: 2136ad0e9500d0949f96167e63f3e298620040aea8f9c74621959eda5d4cf8e6
- requires_dist:
- - sphinx>=5
- - beautifulsoup4
- - docutils!=0.17.0
- - packaging
- - babel
- - pygments>=2.7
- - accessible-pygments
- - typing-extensions
- - numpydoc ; extra == 'doc'
- - linkify-it-py ; extra == 'doc'
- - rich ; extra == 'doc'
- - sphinxext-rediraffe ; extra == 'doc'
- - sphinx-sitemap ; extra == 'doc'
- - sphinx-autoapi>=3.0.0 ; extra == 'doc'
- - myst-parser ; extra == 'doc'
- - ablog>=0.11.8 ; extra == 'doc'
- - jupyter-sphinx ; extra == 'doc'
- - pandas ; extra == 'doc'
- - plotly ; extra == 'doc'
- - matplotlib ; extra == 'doc'
- - numpy ; extra == 'doc'
- - xarray ; extra == 'doc'
- - sphinx-copybutton ; extra == 'doc'
- - sphinx-design ; extra == 'doc'
- - sphinx-togglebutton ; extra == 'doc'
- - jupyterlite-sphinx ; extra == 'doc'
- - sphinxcontrib-youtube>=1.4.1 ; extra == 'doc'
- - sphinx-favicon>=1.0.1 ; extra == 'doc'
- - ipykernel ; extra == 'doc'
- - nbsphinx ; extra == 'doc'
- - ipyleaflet ; extra == 'doc'
- - colorama ; extra == 'doc'
- - ipywidgets ; extra == 'doc'
- - graphviz ; extra == 'doc'
- - pytest ; extra == 'test'
- - pytest-cov ; extra == 'test'
- - pytest-regressions ; extra == 'test'
- - sphinx[test] ; extra == 'test'
- - pyyaml ; extra == 'dev'
- - pre-commit ; extra == 'dev'
- - pydata-sphinx-theme[doc,test] ; extra == 'dev'
- - tox ; extra == 'dev'
- - pandoc ; extra == 'dev'
- - sphinx-theme-builder[cli] ; extra == 'dev'
- - pytest-playwright ; extra == 'a11y'
- - babel ; extra == 'i18n'
- - jinja2 ; extra == 'i18n'
- requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl
name: pyflakes
version: 3.4.0
@@ -4341,6 +4399,15 @@ packages:
requires_dist:
- colorama>=0.4.6 ; extra == 'windows-terminal'
requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/46/a4/aa2bada4a2fd648f40f19affa55d2c01dc7ff5ea9cffd3dfdeb6114951db/pymdown_extensions-10.18-py3-none-any.whl
+ name: pymdown-extensions
+ version: '10.18'
+ sha256: 090bca72be43f7d3186374e23c782899dbef9dc153ef24c59dcd3c346f9ffcae
+ requires_dist:
+ - markdown>=3.6
+ - pyyaml
+ - pygments>=2.19.1 ; extra == 'extra'
+ requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl
name: pyparsing
version: 3.2.5
@@ -4597,6 +4664,13 @@ packages:
version: 6.0.3
sha256: 8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8
requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl
+ name: pyyaml-env-tag
+ version: '1.1'
+ sha256: 17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04
+ requires_dist:
+ - pyyaml
+ requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl
name: pyzmq
version: 27.1.0
@@ -4649,16 +4723,6 @@ packages:
purls: []
size: 252359
timestamp: 1740379663071
-- pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl
- name: readme-renderer
- version: '44.0'
- sha256: 2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151
- requires_dist:
- - nh3>=0.2.14
- - docutils>=0.21.2
- - pygments>=2.5.1
- - cmarkgfm>=0.8.0 ; extra == 'md'
- requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl
name: referencing
version: 0.37.0
@@ -4680,12 +4744,6 @@ packages:
- pysocks>=1.5.6,!=1.5.7 ; extra == 'socks'
- chardet>=3.0.2,<6 ; extra == 'use-chardet-on-py3'
requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/af/63/ac52b32b33ae62f2076ed5c4f6b00e065e3ccbb2063e9a2e813b2bfc95bf/restructuredtext_lint-2.0.2-py3-none-any.whl
- name: restructuredtext-lint
- version: 2.0.2
- sha256: 374c0d3e7e0867b2335146a145343ac619400623716b211b9a010c94426bbed7
- requires_dist:
- - docutils>=0.11,<1.0
- pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl
name: rfc3339-validator
version: 0.1.4
@@ -4706,16 +4764,6 @@ packages:
- lark>=1.2.2
- pytest>=8.3.5 ; extra == 'testing'
requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl
- name: roman-numerals-py
- version: 3.1.0
- sha256: 9da2ad2fb670bcf24e81070ceb3be72f6c11c440d73bd579fbeca1e9f330954c
- requires_dist:
- - mypy==1.15.0 ; extra == 'lint'
- - ruff==0.9.7 ; extra == 'lint'
- - pyright==1.1.394 ; extra == 'lint'
- - pytest>=8 ; extra == 'test'
- requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/3c/6b/0229d3bed4ddaa409e6d90b0ae967ed4380e4bdd0dad6e59b92c17d42457/rpds_py-0.29.0-cp313-cp313-win_amd64.whl
name: rpds-py
version: 0.29.0
@@ -5134,209 +5182,11 @@ packages:
version: 1.3.1
sha256: 2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2
requires_python: '>=3.7'
-- pypi: https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl
- name: snowballstemmer
- version: 3.0.1
- sha256: 6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064
- requires_python: '!=3.0.*,!=3.1.*,!=3.2.*'
- pypi: https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl
name: soupsieve
version: '2.8'
sha256: 0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c
requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/31/53/136e9eca6e0b9dc0e1962e2c908fbea2e5ac000c2a2fbd9a35797958c48b/sphinx-8.2.3-py3-none-any.whl
- name: sphinx
- version: 8.2.3
- sha256: 4405915165f13521d875a8c29c8970800a0141c14cc5416a38feca4ea5d9b9c3
- requires_dist:
- - sphinxcontrib-applehelp>=1.0.7
- - sphinxcontrib-devhelp>=1.0.6
- - sphinxcontrib-htmlhelp>=2.0.6
- - sphinxcontrib-jsmath>=1.0.1
- - sphinxcontrib-qthelp>=1.0.6
- - sphinxcontrib-serializinghtml>=1.1.9
- - jinja2>=3.1
- - pygments>=2.17
- - docutils>=0.20,<0.22
- - snowballstemmer>=2.2
- - babel>=2.13
- - alabaster>=0.7.14
- - imagesize>=1.3
- - requests>=2.30.0
- - roman-numerals-py>=1.0.0
- - packaging>=23.0
- - colorama>=0.4.6 ; sys_platform == 'win32'
- - sphinxcontrib-websupport ; extra == 'docs'
- - ruff==0.9.9 ; extra == 'lint'
- - mypy==1.15.0 ; extra == 'lint'
- - sphinx-lint>=0.9 ; extra == 'lint'
- - types-colorama==0.4.15.20240311 ; extra == 'lint'
- - types-defusedxml==0.7.0.20240218 ; extra == 'lint'
- - types-docutils==0.21.0.20241128 ; extra == 'lint'
- - types-pillow==10.2.0.20240822 ; extra == 'lint'
- - types-pygments==2.19.0.20250219 ; extra == 'lint'
- - types-requests==2.32.0.20241016 ; extra == 'lint'
- - types-urllib3==1.26.25.14 ; extra == 'lint'
- - pyright==1.1.395 ; extra == 'lint'
- - pytest>=8.0 ; extra == 'lint'
- - pypi-attestations==0.0.21 ; extra == 'lint'
- - betterproto==2.0.0b6 ; extra == 'lint'
- - pytest>=8.0 ; extra == 'test'
- - pytest-xdist[psutil]>=3.4 ; extra == 'test'
- - defusedxml>=0.7.1 ; extra == 'test'
- - cython>=3.0 ; extra == 'test'
- - setuptools>=70.0 ; extra == 'test'
- - typing-extensions>=4.9 ; extra == 'test'
- requires_python: '>=3.11'
-- pypi: https://files.pythonhosted.org/packages/05/f2/9657c98a66973b7c35bfd48ba65d1922860de9598fbb535cd96e3f58a908/sphinx_autodoc_typehints-3.5.2-py3-none-any.whl
- name: sphinx-autodoc-typehints
- version: 3.5.2
- sha256: 0accd043619f53c86705958e323b419e41667917045ac9215d7be1b493648d8c
- requires_dist:
- - sphinx>=8.2.3
- - furo>=2025.9.25 ; extra == 'docs'
- - covdefaults>=2.3 ; extra == 'testing'
- - coverage>=7.10.7 ; extra == 'testing'
- - defusedxml>=0.7.1 ; extra == 'testing'
- - diff-cover>=9.7.1 ; extra == 'testing'
- - pytest-cov>=7 ; extra == 'testing'
- - pytest>=8.4.2 ; extra == 'testing'
- - sphobjinv>=2.3.1.3 ; extra == 'testing'
- - typing-extensions>=4.15 ; extra == 'testing'
- requires_python: '>=3.11'
-- pypi: https://files.pythonhosted.org/packages/51/9e/c41d68be04eef5b6202b468e0f90faf0c469f3a03353f2a218fd78279710/sphinx_book_theme-1.1.4-py3-none-any.whl
- name: sphinx-book-theme
- version: 1.1.4
- sha256: 843b3f5c8684640f4a2d01abd298beb66452d1b2394cd9ef5be5ebd5640ea0e1
- requires_dist:
- - sphinx>=6.1
- - pydata-sphinx-theme==0.15.4
- - pre-commit ; extra == 'code-style'
- - ablog ; extra == 'doc'
- - ipywidgets ; extra == 'doc'
- - folium ; extra == 'doc'
- - numpy ; extra == 'doc'
- - matplotlib ; extra == 'doc'
- - numpydoc ; extra == 'doc'
- - myst-nb ; extra == 'doc'
- - nbclient ; extra == 'doc'
- - pandas ; extra == 'doc'
- - plotly ; extra == 'doc'
- - sphinx-design ; extra == 'doc'
- - sphinx-examples ; extra == 'doc'
- - sphinx-copybutton ; extra == 'doc'
- - sphinx-tabs ; extra == 'doc'
- - sphinx-togglebutton ; extra == 'doc'
- - sphinx-thebe ; extra == 'doc'
- - sphinxcontrib-bibtex ; extra == 'doc'
- - sphinxcontrib-youtube ; extra == 'doc'
- - sphinxext-opengraph ; extra == 'doc'
- - beautifulsoup4 ; extra == 'test'
- - coverage ; extra == 'test'
- - defusedxml ; extra == 'test'
- - myst-nb ; extra == 'test'
- - pytest ; extra == 'test'
- - pytest-cov ; extra == 'test'
- - pytest-regressions ; extra == 'test'
- - sphinx-thebe ; extra == 'test'
- requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/77/c7/52b48aec16b26c52aba854d03a3a31e0681150301dac1bea2243645a69e7/sphinx_gallery-0.19.0-py3-none-any.whl
- name: sphinx-gallery
- version: 0.19.0
- sha256: 4c28751973f81769d5bbbf5e4ebaa0dc49dff8c48eb7f11131eb5f6e4aa25f0e
- requires_dist:
- - pillow
- - sphinx>=5
- - sphinxcontrib-video ; extra == 'animations'
- - absl-py ; extra == 'dev'
- - graphviz ; extra == 'dev'
- - intersphinx-registry ; extra == 'dev'
- - ipython ; extra == 'dev'
- - joblib ; extra == 'dev'
- - jupyterlite-sphinx>=0.17.1 ; extra == 'dev'
- - lxml ; extra == 'dev'
- - matplotlib ; extra == 'dev'
- - numpy ; extra == 'dev'
- - packaging ; extra == 'dev'
- - plotly ; extra == 'dev'
- - pydata-sphinx-theme ; extra == 'dev'
- - pytest ; extra == 'dev'
- - pytest-coverage ; extra == 'dev'
- - seaborn ; extra == 'dev'
- - sphinxcontrib-video ; extra == 'dev'
- - statsmodels ; extra == 'dev'
- - jupyterlite-sphinx ; extra == 'jupyterlite'
- - joblib ; extra == 'parallel'
- - numpy ; extra == 'recommender'
- - graphviz ; extra == 'show-api-usage'
- - memory-profiler ; extra == 'show-memory'
- requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl
- name: sphinxcontrib-applehelp
- version: 2.0.0
- sha256: 4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5
- requires_dist:
- - ruff==0.5.5 ; extra == 'lint'
- - mypy ; extra == 'lint'
- - types-docutils ; extra == 'lint'
- - sphinx>=5 ; extra == 'standalone'
- - pytest ; extra == 'test'
- requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl
- name: sphinxcontrib-devhelp
- version: 2.0.0
- sha256: aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2
- requires_dist:
- - ruff==0.5.5 ; extra == 'lint'
- - mypy ; extra == 'lint'
- - types-docutils ; extra == 'lint'
- - sphinx>=5 ; extra == 'standalone'
- - pytest ; extra == 'test'
- requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl
- name: sphinxcontrib-htmlhelp
- version: 2.1.0
- sha256: 166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8
- requires_dist:
- - ruff==0.5.5 ; extra == 'lint'
- - mypy ; extra == 'lint'
- - types-docutils ; extra == 'lint'
- - sphinx>=5 ; extra == 'standalone'
- - pytest ; extra == 'test'
- - html5lib ; extra == 'test'
- requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl
- name: sphinxcontrib-jsmath
- version: 1.0.1
- sha256: 2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178
- requires_dist:
- - pytest ; extra == 'test'
- - flake8 ; extra == 'test'
- - mypy ; extra == 'test'
- requires_python: '>=3.5'
-- pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl
- name: sphinxcontrib-qthelp
- version: 2.0.0
- sha256: b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb
- requires_dist:
- - ruff==0.5.5 ; extra == 'lint'
- - mypy ; extra == 'lint'
- - types-docutils ; extra == 'lint'
- - sphinx>=5 ; extra == 'standalone'
- - pytest ; extra == 'test'
- - defusedxml>=0.7.1 ; extra == 'test'
- requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl
- name: sphinxcontrib-serializinghtml
- version: 2.0.0
- sha256: 6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331
- requires_dist:
- - ruff==0.5.5 ; extra == 'lint'
- - mypy ; extra == 'lint'
- - types-docutils ; extra == 'lint'
- - sphinx>=5 ; extra == 'standalone'
- - pytest ; extra == 'test'
- requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
name: stack-data
version: 0.6.3
@@ -5350,11 +5200,6 @@ packages:
- pygments ; extra == 'tests'
- littleutils ; extra == 'tests'
- cython ; extra == 'tests'
-- pypi: https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl
- name: stevedore
- version: 5.6.0
- sha256: 4a36dccefd7aeea0c70135526cecb7766c4c84c473b1af68db23d541b6dc1820
- requires_python: '>=3.10'
- pypi: https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl
name: terminado
version: 0.18.1
@@ -5487,6 +5332,22 @@ packages:
- pytest-mock>=3 ; extra == 'testing'
- pytest-randomly>=3 ; extra == 'testing'
requires_python: '>=3.7'
+- pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
+ name: tqdm
+ version: 4.67.1
+ sha256: 26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2
+ requires_dist:
+ - colorama ; sys_platform == 'win32'
+ - pytest>=6 ; extra == 'dev'
+ - pytest-cov ; extra == 'dev'
+ - pytest-timeout ; extra == 'dev'
+ - pytest-asyncio>=0.24 ; extra == 'dev'
+ - nbval ; extra == 'dev'
+ - requests ; extra == 'discord'
+ - slack-sdk ; extra == 'slack'
+ - requests ; extra == 'telegram'
+ - ipywidgets>=6 ; extra == 'notebook'
+ requires_python: '>=3.7'
- pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
name: traitlets
version: 5.14.3
@@ -5652,6 +5513,34 @@ packages:
- setuptools>=68 ; extra == 'test'
- time-machine>=2.10 ; platform_python_implementation == 'CPython' and extra == 'test'
requires_python: '>=3.8'
+- pypi: https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl
+ name: watchdog
+ version: 6.0.0
+ sha256: 76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134
+ requires_dist:
+ - pyyaml>=3.10 ; extra == 'watchmedo'
+ requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl
+ name: watchdog
+ version: 6.0.0
+ sha256: 20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2
+ requires_dist:
+ - pyyaml>=3.10 ; extra == 'watchmedo'
+ requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl
+ name: watchdog
+ version: 6.0.0
+ sha256: cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680
+ requires_dist:
+ - pyyaml>=3.10 ; extra == 'watchmedo'
+ requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl
+ name: watchdog
+ version: 6.0.0
+ sha256: a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b
+ requires_dist:
+ - pyyaml>=3.10 ; extra == 'watchmedo'
+ requires_python: '>=3.9'
- pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
name: wcwidth
version: 0.2.14
diff --git a/pixi.toml b/pixi.toml
index a7a8897b..e379be08 100644
--- a/pixi.toml
+++ b/pixi.toml
@@ -45,8 +45,9 @@ update-lock = "pixi update"
tox = "tox"
# Documentation tasks
-docs-build = "sphinx-build -b html docs/src docs/_build/html"
-docs-clean = "rm -rf docs/_build/"
+docs-build = "mkdocs build"
+docs-serve = "mkdocs serve"
+docs-clean = "rm -rf site/"
[pypi-dependencies] # == [feature.default.pypi-dependencies]
# Editable install of the package itself
diff --git a/pyproject.toml b/pyproject.toml
index 3cdb977c..d535db26 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -55,11 +55,10 @@ dev = [
"jupyterlab"
]
docs = [
- "doc8",
- "readme-renderer",
- "sphinx_autodoc_typehints",
- "sphinx_book_theme",
- "sphinx_gallery",
+ "mkdocs",
+ "mkdocs-material",
+ "mkdocstrings[python]",
+ "mkdocs-gallery",
"toml"
]
diff --git a/src/easyscience/__init__.py b/src/easyscience/__init__.py
index e3d4b084..3c798ad9 100644
--- a/src/easyscience/__init__.py
+++ b/src/easyscience/__init__.py
@@ -14,11 +14,11 @@
from .variable import Parameter # noqa: E402
__all__ = [
- __version__,
- global_object,
- ObjBase,
- AvailableMinimizers,
- Fitter,
- DescriptorNumber,
- Parameter,
+ '__version__',
+ 'global_object',
+ 'ObjBase',
+ 'AvailableMinimizers',
+ 'Fitter',
+ 'DescriptorNumber',
+ 'Parameter',
]
diff --git a/src/easyscience/base_classes/__init__.py b/src/easyscience/base_classes/__init__.py
index 9f3ba080..b43e85b9 100644
--- a/src/easyscience/base_classes/__init__.py
+++ b/src/easyscience/base_classes/__init__.py
@@ -5,9 +5,9 @@
from .obj_base import ObjBase
__all__ = [
- BasedBase,
- CollectionBase,
- ObjBase,
- ModelBase,
- NewBase,
+ 'BasedBase',
+ 'CollectionBase',
+ 'ObjBase',
+ 'ModelBase',
+ 'NewBase',
]
diff --git a/src/easyscience/io/__init__.py b/src/easyscience/io/__init__.py
index b21e648c..a52aa287 100644
--- a/src/easyscience/io/__init__.py
+++ b/src/easyscience/io/__init__.py
@@ -6,7 +6,7 @@
from .serializer_dict import SerializerDict
__all__ = [
- SerializerBase,
- SerializerComponent,
- SerializerDict,
+ 'SerializerBase',
+ 'SerializerComponent',
+ 'SerializerDict',
]
diff --git a/src/easyscience/models/polynomial.py b/src/easyscience/models/polynomial.py
index 9ea2576e..308faadb 100644
--- a/src/easyscience/models/polynomial.py
+++ b/src/easyscience/models/polynomial.py
@@ -23,8 +23,8 @@ class Polynomial(ObjBase):
----------
name : str
The name of the model.
- degree : int
- The degree of the polynomial.
+ coefficients : Optional[Union[Iterable[Union[float, Parameter]], CollectionBase]]
+ The coefficients of the polynomial.
"""
coefficients: ClassVar[CollectionBase]
diff --git a/src/easyscience/variable/__init__.py b/src/easyscience/variable/__init__.py
index 96094cab..25a96597 100644
--- a/src/easyscience/variable/__init__.py
+++ b/src/easyscience/variable/__init__.py
@@ -7,11 +7,11 @@
from .parameter import Parameter
__all__ = [
- DescriptorAnyType,
- DescriptorArray,
- DescriptorBase,
- DescriptorBool,
- DescriptorNumber,
- DescriptorStr,
- Parameter,
+ 'DescriptorAnyType',
+ 'DescriptorArray',
+ 'DescriptorBase',
+ 'DescriptorBool',
+ 'DescriptorNumber',
+ 'DescriptorStr',
+ 'Parameter',
]