From 474e6ea870fb50736bad56e13a28ea74ffbca420 Mon Sep 17 00:00:00 2001 From: blakeNaccarato Date: Thu, 18 Jul 2024 14:46:15 -0700 Subject: [PATCH] Update model function --- data/models/modelfun-3.11.dillpickle.dvc | 10 +++++----- data/models/modelfun-3.12.dillpickle.dvc | 10 +++++----- lock.json | 8 ++++---- requirements/requirements.txt | 18 +++++++++--------- src/boilerdaq/daq.py | 6 ++---- src/boilerdaq/models/params.py | 2 +- submodules/boilercore | 2 +- .../root/data/models/modelfun-3.11.dillpickle | Bin 63301 -> 1293 bytes .../root/data/models/modelfun-3.12.dillpickle | Bin 60741 -> 1112 bytes 9 files changed, 27 insertions(+), 29 deletions(-) diff --git a/data/models/modelfun-3.11.dillpickle.dvc b/data/models/modelfun-3.11.dillpickle.dvc index 1ba5b5f..4c7d498 100644 --- a/data/models/modelfun-3.11.dillpickle.dvc +++ b/data/models/modelfun-3.11.dillpickle.dvc @@ -1,12 +1,12 @@ -md5: a2d8f534e958e3213da9e560e3e6697e +md5: 7952f6be4194ca8011e1ad9c61d2785f frozen: true deps: - path: data/models/modelfun-3.11.dillpickle repo: - url: ../boilercore - rev_lock: 7a776c8e3b35f8077056922e5f0138ece71a9028 + url: submodules/boilercore + rev_lock: 780ca1358fe8a1959b6602fd603327d37baf57b7 outs: -- md5: 79f36b9dd6d19be02ab360ae7a8d801c - size: 63301 +- md5: 5496feba82331752a39059cb49cae48a + size: 1293 hash: md5 path: modelfun-3.11.dillpickle diff --git a/data/models/modelfun-3.12.dillpickle.dvc b/data/models/modelfun-3.12.dillpickle.dvc index f5ea5b9..a6bc432 100644 --- a/data/models/modelfun-3.12.dillpickle.dvc +++ b/data/models/modelfun-3.12.dillpickle.dvc @@ -1,12 +1,12 @@ -md5: 078e2641b466c484ffaeae10b9184231 +md5: 905b922b4e8499c2a004ec7015778b83 frozen: true deps: - path: data/models/modelfun-3.12.dillpickle repo: - url: ../boilercore - rev_lock: 7a776c8e3b35f8077056922e5f0138ece71a9028 + url: submodules/boilercore + rev_lock: 780ca1358fe8a1959b6602fd603327d37baf57b7 outs: -- md5: 4c8f5419f842a9f1f2de719d8e51a7ed - size: 60741 +- md5: 75e092f44d0df89ebfd148838133fc81 + size: 1112 hash: md5 path: modelfun-3.12.dillpickle diff --git a/lock.json b/lock.json index 26de0db..8466bc8 100644 --- a/lock.json +++ b/lock.json @@ -1,5 +1,5 @@ { - "time": "2024-07-09T22:54:01.158673+00:00", + "time": "2024-07-18T21:40:09.533221+00:00", "uv": "0.2.23", "minimum_python": "3.11", "paths": [ @@ -14,7 +14,7 @@ "directs": { "boilercore": { "op": " @ ", - "rev": "git+https://github.com/softboiler/boilercore@2306b2324ef805a4df0f211bf7cfec837fe56d9b" + "rev": "git+https://github.com/softboiler/boilercore@780ca1358fe8a1959b6602fd603327d37baf57b7" }, "pyside6": { "op": "==", @@ -285,6 +285,6 @@ "rev": "0.132.2" } }, - "direct_requirements": "boilercore @ git+https://github.com/softboiler/boilercore@2306b2324ef805a4df0f211bf7cfec837fe56d9b\npyside6==6.7.2 ; sys_platform != 'linux'\npyside6-addons==6.7.2 ; sys_platform == 'linux'\npyside6-essentials==6.7.2 ; sys_platform == 'linux'\nshiboken6==6.7.2 ; sys_platform == 'linux'\ncachier @ git+https://github.com/blakeNaccarato/cachier@db7f394a553a90944ca25c2d687771006e77a024\ncopier==9.2.0\ncyclopts==2.7.1\ndebugpy==1.8.2\ndill==0.3.7\ndocutils==0.21.2\ndulwich==0.22.1\ndvc==3.51.2\nfawltydeps==0.16.0\ngmpy2==2.2.0rc1\nipykernel==6.29.0\nipython==8.25.0\nlibusb==1.0.27\nlinkify-it-py==2.0.3\nloguru==0.7.0\nmatplotlib==3.7.2\nmcculw==1.0.0\nmyst-nb==1.1.0\nmyst-parser==3.0.1\nnbconvert==7.7.3\nnbformat==5.9.2\nnumpy==1.24.4\nnumpydoc==1.7.0\npandas==2.2.2\npandas-stubs==2.2.2.240514\npipdeptree==2.23.0\npipx==1.6.0\nploomber-engine==0.0.30\npre-commit==3.7.1\npydantic==2.6.1\npyqtgraph==0.13.3\npyright==1.1.364\npytest==8.2.2\npytest-cov==5.0.0\npytest-custom-exit-code==0.3.0\npytest-github-actions-annotate-failures==0.2.0\npyusb==1.2.1\npyvisa==1.14.1\npyvisa-py==0.7.2\npyvisa-sim==0.6.0\nruamel-yaml==0.18.6\nruff==0.4.10\nscipy==1.11.2\nsimple-pid==2.0.0\nsnakeviz==2.2.0\nsourcery==1.19.0\nsphinx==7.3.7\nsphinx-autobuild==2024.4.16\nsphinx-autodoc2==0.5.0\nsphinx-book-theme==1.1.3\nsphinx-design==0.6.0\nsphinx-thebe==0.3.1\nsphinx-tippy==0.4.3\nsphinx-togglebutton==0.3.2\nsphinxcontrib-bibtex==2.6.2\nsphinxcontrib-mermaid==0.9.2\nsphinxcontrib-towncrier==0.4.0a0\nsympy==1.12\ntowncrier==23.11.0\nuldaq==1.2.3\nuncertainties==3.1.7\nurllib3==2.2.2\nzeroconf==0.132.2", - "requirements": "# nodeps\n# ? Missing wheels\npyside6==6.7.2 ; sys_platform == 'linux'\npyside6-addons==6.7.2 ; sys_platform == 'linux'\npyside6-essentials==6.7.2 ; sys_platform == 'linux'\nshiboken6==6.7.2 ; sys_platform == 'linux'\n# compilation\n# This file was autogenerated by uv via the following command:\n# uv pip compile --universal --all-extras --exclude-newer 2024-07-09T22:54:01.158673Z --python-version 3.11 --resolution lowest-direct --override requirements/override.txt requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml submodules/boilercore/pyproject.toml\n-e .\n # via -r requirements/dev.in\n-e docs/\n # via -r requirements/dev.in\n-e scripts/\n # via -r requirements/dev.in\n-e submodules/boilercore\n # via\n # --override requirements/override.txt\n # boilerdaq (pyproject.toml)\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq\n # boilerdaq-tests\n-e tests/\n # via -r requirements/dev.in\naccessible-pygments==0.0.5\n # via pydata-sphinx-theme\naiohttp==3.9.5\n # via\n # aiohttp-retry\n # fsspec\n # gcsfs\naiohttp-retry==2.8.3\n # via\n # dvc-http\n # scmrepo\naiosignal==1.3.1\n # via aiohttp\nalabaster==0.7.16\n # via sphinx\namqp==5.2.0\n # via kombu\nannotated-types==0.7.0\n # via pydantic\nantlr4-python3-runtime==4.9.3\n # via\n # hydra-core\n # omegaconf\nanyio==4.4.0\n # via\n # starlette\n # watchfiles\nappdirs==1.4.4\n # via iterative-telemetry\nappnope==0.1.4 ; platform_system == 'Darwin'\n # via ipykernel\nargcomplete==3.4.0\n # via pipx\nastroid==3.2.2\n # via sphinx-autodoc2\nasttokens==2.4.1\n # via stack-data\nasyncssh==2.15.0\n # via scmrepo\natpublic==4.1.0\n # via flufl-lock\nattrs==23.2.0\n # via\n # aiohttp\n # cyclopts\n # dvc\n # dvc-data\n # jsonschema\n # jupyter-cache\n # referencing\n # sqltrie\nbabel==2.15.0\n # via\n # pydata-sphinx-theme\n # sphinx\nbackoff==2.2.1\n # via posthog\nbeautifulsoup4==4.12.3\n # via\n # nbconvert\n # pydata-sphinx-theme\n # sphinx-tippy\nbilliard==4.2.0\n # via celery\nbleach==6.1.0\n # via nbconvert\nblosc2==2.7.0\n # via tables\nbottleneck==1.4.0\n # via pandas\ncachetools==5.3.3\n # via google-auth\ncachier @ git+https://github.com/blakeNaccarato/cachier@db7f394a553a90944ca25c2d687771006e77a024\n # via\n # --override requirements/override.txt\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\ncelery==5.4.0\n # via\n # dvc\n # dvc-task\ncertifi==2024.7.4\n # via requests\ncffi==1.16.0\n # via\n # cryptography\n # pygit2\n # pyzmq\ncfgv==3.4.0\n # via pre-commit\ncharset-normalizer==3.3.2\n # via requests\nclick==8.1.7\n # via\n # celery\n # click-didyoumean\n # click-plugins\n # click-repl\n # jupyter-cache\n # ploomber-engine\n # towncrier\n # typer\n # userpath\n # uvicorn\nclick-didyoumean==0.3.1\n # via celery\nclick-plugins==1.1.1\n # via celery\nclick-repl==0.3.0\n # via celery\ncolorama==0.4.6\n # via\n # click\n # copier\n # debuglater\n # dvc\n # ipython\n # loguru\n # pipx\n # pytest\n # sphinx\n # sphinx-autobuild\n # tqdm\ncomm==0.2.2\n # via ipykernel\nconfigobj==5.0.8\n # via dvc\ncontourpy==1.2.1\n # via matplotlib\ncopier==9.2.0\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\ncoverage==7.5.4\n # via pytest-cov\ncryptography==42.0.8\n # via asyncssh\ncycler==0.12.1\n # via matplotlib\ncyclopts==2.7.1\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\ndebuglater==1.4.4\n # via ploomber-engine\ndebugpy==1.8.2\n # via\n # -r requirements/dev.in\n # ipykernel\ndecorator==5.1.1\n # via\n # gcsfs\n # ipython\ndefusedxml==0.7.1\n # via nbconvert\ndictdiffer==0.9.0\n # via dvc-data\ndill==0.3.8\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # cachier\ndiskcache==5.6.3\n # via dvc-data\ndistlib==0.3.8\n # via virtualenv\ndistro==1.9.0\n # via\n # dvc\n # iterative-telemetry\ndocstring-parser==0.15\n # via cyclopts\ndocutils==0.21.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # myst-parser\n # pybtex-docutils\n # pydata-sphinx-theme\n # rich-rst\n # sphinx\n # sphinx-togglebutton\n # sphinxcontrib-bibtex\ndpath==2.2.0\n # via dvc\ndulwich==0.22.1\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq-tools\n # dvc\n # dvc-studio-client\n # scmrepo\ndunamai==1.21.2 ; python_version < '4'\n # via copier\ndvc==3.51.2\n # via\n # -r requirements/dev.in\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # dvc-gs\ndvc-data==3.15.1\n # via dvc\ndvc-gs==3.0.1\n # via dvc\ndvc-http==2.32.0\n # via dvc\ndvc-objects==5.1.0\n # via\n # dvc\n # dvc-data\ndvc-render==1.0.2\n # via dvc\ndvc-studio-client==0.21.0\n # via dvc\ndvc-task==0.4.0\n # via dvc\nentrypoints==0.4\n # via gto\nexecuting==2.0.1\n # via stack-data\nfastjsonschema==2.20.0\n # via nbformat\nfawltydeps==0.16.0\n # via -r requirements/dev.in\nfilelock==3.15.4\n # via\n # iterative-telemetry\n # virtualenv\nflatten-dict==0.4.2\n # via dvc\nflufl-lock==7.1.1\n # via dvc\nfonttools==4.53.1\n # via matplotlib\nfrozenlist==1.4.1\n # via\n # aiohttp\n # aiosignal\nfsspec==2024.6.1\n # via\n # dvc\n # dvc-data\n # dvc-http\n # dvc-objects\n # gcsfs\n # scmrepo\nfuncy==2.0\n # via\n # copier\n # dvc\n # dvc-data\n # dvc-objects\n # dvc-task\n # gto\n # scmrepo\nfuture==1.0.0\n # via uncertainties\ngcsfs==2024.6.1\n # via dvc-gs\ngitdb==4.0.11\n # via gitpython\ngitpython==3.1.43\n # via scmrepo\ngmpy2==2.2.0rc1\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\ngoogle-api-core==2.19.1\n # via\n # google-cloud-core\n # google-cloud-storage\ngoogle-auth==2.32.0\n # via\n # gcsfs\n # google-api-core\n # google-auth-oauthlib\n # google-cloud-core\n # google-cloud-storage\ngoogle-auth-oauthlib==1.2.1\n # via gcsfs\ngoogle-cloud-core==2.4.1\n # via google-cloud-storage\ngoogle-cloud-storage==2.17.0\n # via gcsfs\ngoogle-crc32c==1.5.0\n # via\n # google-cloud-storage\n # google-resumable-media\ngoogle-resumable-media==2.7.1\n # via google-cloud-storage\ngoogleapis-common-protos==1.63.2\n # via google-api-core\ngrandalf==0.8\n # via dvc\ngreenlet==3.0.3 ; python_version < '3.13' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'WIN32' or platform_machine == 'win32'))))))\n # via sqlalchemy\ngto==1.7.1\n # via dvc\nh11==0.14.0\n # via uvicorn\nhydra-core==1.3.2\n # via dvc\nidentify==2.6.0\n # via pre-commit\nidna==3.7\n # via\n # anyio\n # requests\n # yarl\nifaddr==0.2.0\n # via zeroconf\nimagesize==1.4.1\n # via sphinx\nimportlib-metadata==8.0.0\n # via\n # fawltydeps\n # jupyter-cache\n # myst-nb\nincremental==22.10.0\n # via towncrier\niniconfig==2.0.0\n # via pytest\nipykernel==6.29.0\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # myst-nb\nipython==8.25.0\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\n # ipykernel\n # myst-nb\n # ploomber-engine\nisort==5.13.2 ; python_version >= '3.8'\n # via fawltydeps\niterative-telemetry==0.0.8\n # via dvc\njedi==0.19.1\n # via ipython\njinja2==3.1.4\n # via\n # copier\n # jinja2-ansible-filters\n # myst-parser\n # nbconvert\n # sphinx\n # sphinx-tippy\n # towncrier\njinja2-ansible-filters==1.3.2\n # via copier\njsonschema==4.23.0\n # via nbformat\njsonschema-specifications==2023.12.1\n # via jsonschema\njupyter-cache==1.0.0\n # via myst-nb\njupyter-client==8.6.2\n # via\n # ipykernel\n # nbclient\njupyter-core==5.7.2\n # via\n # ipykernel\n # jupyter-client\n # nbclient\n # nbconvert\n # nbformat\njupyterlab-pygments==0.3.0\n # via nbconvert\nkiwisolver==1.4.5\n # via matplotlib\nkombu==5.3.7\n # via\n # celery\n # dvc\n # dvc-task\nlatexcodec==3.0.0\n # via pybtex\nlibusb==1.0.27\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nlinkify-it-py==2.0.3\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nllvmlite==0.43.0\n # via numba\nloguru==0.7.0\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nmarkdown-it-py==3.0.0\n # via\n # mdit-py-plugins\n # myst-parser\n # rich\nmarkupsafe==2.1.5\n # via\n # jinja2\n # nbconvert\nmatplotlib==3.7.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nmatplotlib-inline==0.1.7\n # via\n # ipykernel\n # ipython\nmcculw==1.0.0\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nmdit-py-plugins==0.4.1\n # via myst-parser\nmdurl==0.1.2\n # via markdown-it-py\nmistune==3.0.2\n # via nbconvert\nmonotonic==1.6\n # via posthog\nmpmath==1.3.0\n # via sympy\nmsgpack==1.0.8\n # via blosc2\nmultidict==6.0.5\n # via\n # aiohttp\n # yarl\nmyst-nb==1.1.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nmyst-parser==3.0.1\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # myst-nb\nnbclient==0.10.0\n # via\n # jupyter-cache\n # myst-nb\n # nbconvert\n # ploomber-engine\nnbconvert==7.7.3\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nnbformat==5.9.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # jupyter-cache\n # myst-nb\n # nbclient\n # nbconvert\n # ploomber-engine\nndindex==1.8\n # via blosc2\nnest-asyncio==1.6.0\n # via ipykernel\nnetworkx==3.3\n # via dvc\nnodeenv==1.9.1\n # via\n # pre-commit\n # pyright\nnumba==0.60.0\n # via pandas\nnumexpr==2.10.1\n # via\n # blosc2\n # pandas\n # tables\nnumpy==1.26.0\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # blosc2\n # boilercore\n # bottleneck\n # contourpy\n # matplotlib\n # numba\n # numexpr\n # pandas\n # pandas-stubs\n # pyqtgraph\n # scipy\n # tables\nnumpydoc==1.7.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\noauthlib==3.2.2\n # via requests-oauthlib\nomegaconf==2.3.0\n # via\n # dvc\n # hydra-core\norjson==3.10.6 ; implementation_name == 'cpython'\n # via sqltrie\npackaging==24.1\n # via\n # copier\n # dunamai\n # dvc\n # hydra-core\n # ipykernel\n # matplotlib\n # nbconvert\n # pip-requirements-parser\n # pipdeptree\n # pipx\n # pkg-about\n # pydata-sphinx-theme\n # pytest\n # sphinx\n # tables\npandas==2.2.2\n # via\n # boilerdaq (pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq\npandas-stubs==2.2.2.240514\n # via -r requirements/dev.in\npandocfilters==1.5.1\n # via nbconvert\nparso==0.8.4\n # via\n # jedi\n # ploomber-engine\npathspec==0.12.1\n # via\n # copier\n # dvc\n # scmrepo\npexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'\n # via ipython\npillow==10.4.0\n # via matplotlib\npip==24.1.2\n # via pipdeptree\npip-requirements-parser==32.0.1\n # via fawltydeps\npipdeptree==2.23.0\n # via -r requirements/dev.in\npipx==1.6.0\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\npkg-about==1.1.6\n # via libusb\nplatformdirs==3.11.0\n # via\n # dvc\n # jupyter-core\n # pipx\n # virtualenv\nploomber-core==0.2.25\n # via ploomber-engine\nploomber-engine==0.0.30\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\npluggy==1.5.0\n # via pytest\nplumbum==1.8.3\n # via copier\nportalocker==2.10.0\n # via cachier\nposthog==3.5.0\n # via ploomber-core\npre-commit==3.7.1\n # via -r requirements/dev.in\nprompt-toolkit==3.0.47\n # via\n # click-repl\n # ipython\n # questionary\nproto-plus==1.24.0\n # via google-api-core\nprotobuf==5.27.2\n # via\n # google-api-core\n # googleapis-common-protos\n # proto-plus\npsutil==6.0.0\n # via\n # dvc\n # flufl-lock\n # ipykernel\nptyprocess==0.7.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'\n # via pexpect\npure-eval==0.2.2\n # via stack-data\npy-cpuinfo==9.0.0\n # via\n # blosc2\n # tables\npyasn1==0.6.0\n # via\n # pyasn1-modules\n # rsa\npyasn1-modules==0.4.0\n # via google-auth\npybtex==0.24.0\n # via\n # pybtex-docutils\n # sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n # via sphinxcontrib-bibtex\npycparser==2.22\n # via cffi\npydantic==2.6.1\n # via\n # boilerdaq (pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq\n # copier\n # fawltydeps\n # gto\npydantic-core==2.16.2\n # via pydantic\npydata-sphinx-theme==0.15.4\n # via sphinx-book-theme\npydot==2.0.0\n # via dvc\npygit2==1.15.1\n # via scmrepo\npygments==2.18.0\n # via\n # accessible-pygments\n # copier\n # ipython\n # nbconvert\n # pydata-sphinx-theme\n # rich\n # sphinx\npygtrie==2.5.0\n # via\n # dvc\n # dvc-data\n # scmrepo\n # sqltrie\npyparsing==3.0.9\n # via\n # dvc\n # grandalf\n # matplotlib\n # pip-requirements-parser\n # pydot\npyqtgraph==0.13.3\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npyright==1.1.364\n # via -r requirements/dev.in\npyside6==6.7.2 ; sys_platform != 'linux'\n # via -r requirements/dev.in\npyside6-addons==6.7.2 ; sys_platform != 'linux'\n # via pyside6\npyside6-essentials==6.7.2 ; sys_platform != 'linux'\n # via\n # pyside6\n # pyside6-addons\npytest==8.2.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilerdaq-tests (tests/pyproject.toml)\n # boilercore\n # boilerdaq-tests\n # pytest-cov\n # pytest-custom-exit-code\n # pytest-github-actions-annotate-failures\npytest-cov==5.0.0\n # via\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq-tests\npytest-custom-exit-code==0.3.0\n # via\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq-tests\npytest-github-actions-annotate-failures==0.2.0\n # via\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq-tests\npython-dateutil==2.9.0.post0\n # via\n # celery\n # jupyter-client\n # matplotlib\n # pandas\n # posthog\npytz==2024.1\n # via pandas\npyusb==1.2.1\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npyvisa==1.14.1\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\n # pyvisa-py\n # pyvisa-sim\npyvisa-py==0.7.2\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npyvisa-sim==0.6.0\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npywin32==306 ; platform_system == 'Windows' or sys_platform == 'win32' or (platform_python_implementation != 'PyPy' and platform_system == 'Windows') or (platform_python_implementation != 'PyPy' and sys_platform == 'win32')\n # via\n # dvc-task\n # jupyter-core\n # plumbum\n # portalocker\npyyaml==6.0.1\n # via\n # copier\n # jinja2-ansible-filters\n # jupyter-cache\n # myst-nb\n # myst-parser\n # omegaconf\n # ploomber-core\n # pre-commit\n # pybtex\n # pyvisa-sim\npyzmq==26.0.3\n # via\n # ipykernel\n # jupyter-client\nquestionary==1.10.0\n # via copier\nreferencing==0.35.1\n # via\n # jsonschema\n # jsonschema-specifications\nrequests==2.32.3\n # via\n # dvc\n # dvc-studio-client\n # gcsfs\n # google-api-core\n # google-cloud-storage\n # iterative-telemetry\n # posthog\n # requests-oauthlib\n # sphinx\n # sphinx-tippy\nrequests-oauthlib==2.0.0\n # via google-auth-oauthlib\nrich==13.7.1\n # via\n # cyclopts\n # dvc\n # gto\n # rich-rst\n # typer\nrich-rst==1.3.1\n # via cyclopts\nrpds-py==0.19.0\n # via\n # jsonschema\n # referencing\nrsa==4.9\n # via google-auth\nruamel-yaml==0.18.6\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq-docs\n # dvc\n # gto\nruamel-yaml-clib==0.2.8 ; python_version < '3.13' and platform_python_implementation == 'CPython'\n # via ruamel-yaml\nruff==0.4.10\n # via -r requirements/dev.in\nscipy==1.11.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nscmrepo==3.3.6\n # via\n # dvc\n # gto\nsemver==3.0.2\n # via gto\nsetuptools==70.3.0\n # via\n # cachier\n # dulwich\n # fawltydeps\n # libusb\n # pkg-about\n # sphinx-togglebutton\n # zc-lockfile\nshellingham==1.5.4\n # via typer\nshiboken6==6.7.2 ; sys_platform != 'linux'\n # via\n # pyside6\n # pyside6-addons\n # pyside6-essentials\nshortuuid==1.0.13\n # via\n # dvc\n # dvc-task\nshtab==1.7.1\n # via dvc\nsimple-pid==2.0.0\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nsix==1.16.0\n # via\n # asttokens\n # bleach\n # configobj\n # flatten-dict\n # posthog\n # pybtex\n # python-dateutil\nsmmap==5.0.1\n # via gitdb\nsnakeviz==2.2.0\n # via -r requirements/dev.in\nsniffio==1.3.1\n # via anyio\nsnowballstemmer==2.2.0\n # via sphinx\nsoupsieve==2.5\n # via beautifulsoup4\nsourcery==1.19.0\n # via -r requirements/dev.in\nsphinx==7.3.7\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # myst-nb\n # myst-parser\n # numpydoc\n # pydata-sphinx-theme\n # sphinx-autobuild\n # sphinx-book-theme\n # sphinx-design\n # sphinx-thebe\n # sphinx-tippy\n # sphinx-togglebutton\n # sphinxcontrib-bibtex\n # sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-autodoc2==0.5.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-book-theme==1.1.3\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-design==0.6.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-thebe==0.3.1\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-tippy==0.4.3\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-togglebutton==0.3.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinxcontrib-applehelp==1.0.8\n # via sphinx\nsphinxcontrib-bibtex==2.6.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinxcontrib-devhelp==1.0.6\n # via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n # via sphinx\nsphinxcontrib-jsmath==1.0.1\n # via sphinx\nsphinxcontrib-mermaid==0.9.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinxcontrib-qthelp==1.0.7\n # via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n # via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsqlalchemy==2.0.31\n # via jupyter-cache\nsqltrie==0.11.0\n # via dvc-data\nstack-data==0.6.3\n # via ipython\nstarlette==0.37.2\n # via sphinx-autobuild\nstringparser==0.7\n # via pyvisa-sim\nsympy==1.12\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\ntables==3.9.2\n # via pandas\ntabulate==0.9.0\n # via\n # dvc\n # gto\n # jupyter-cache\n # numpydoc\ntinycss2==1.3.0\n # via nbconvert\ntomlkit==0.12.5\n # via dvc\ntornado==6.4.1\n # via\n # ipykernel\n # jupyter-client\n # snakeviz\ntowncrier==23.11.0\n # via\n # -r requirements/dev.in\n # sphinxcontrib-towncrier\ntqdm==4.66.4\n # via\n # dvc\n # dvc-data\n # fsspec\n # ploomber-engine\n # scmrepo\ntraitlets==5.14.3\n # via\n # comm\n # ipykernel\n # ipython\n # jupyter-client\n # jupyter-core\n # matplotlib-inline\n # nbclient\n # nbconvert\n # nbformat\ntyper==0.12.3\n # via gto\ntypes-pytz==2024.1.0.20240417\n # via pandas-stubs\ntyping-extensions==4.12.2\n # via\n # asyncssh\n # cyclopts\n # ipython\n # myst-nb\n # pydantic\n # pydantic-core\n # pydata-sphinx-theme\n # pyvisa\n # pyvisa-py\n # pyvisa-sim\n # sphinx-autodoc2\n # sqlalchemy\n # stringparser\n # typer\ntzdata==2024.1\n # via\n # celery\n # pandas\nuc-micro-py==1.0.3\n # via linkify-it-py\nuldaq==1.2.3\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nuncertainties==3.1.7\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nurllib3==2.2.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # dulwich\n # requests\nuserpath==1.9.2\n # via pipx\nuvicorn==0.30.1\n # via sphinx-autobuild\nvine==5.1.0\n # via\n # amqp\n # celery\n # kombu\nvirtualenv==20.26.3\n # via pre-commit\nvoluptuous==0.15.2\n # via\n # dvc\n # dvc-studio-client\nwatchdog==4.0.1\n # via cachier\nwatchfiles==0.22.0\n # via sphinx-autobuild\nwcwidth==0.2.13\n # via prompt-toolkit\nwebencodings==0.5.1\n # via\n # bleach\n # tinycss2\nwebsockets==12.0\n # via sphinx-autobuild\nwheel==0.43.0\n # via sphinx-togglebutton\nwin32-setctime==1.1.0 ; sys_platform == 'win32'\n # via loguru\nyarl==1.9.4\n # via aiohttp\nzc-lockfile==3.0.post1\n # via dvc\nzeroconf==0.132.2\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nzipp==3.19.2\n # via importlib-metadata\n" + "direct_requirements": "boilercore @ git+https://github.com/softboiler/boilercore@780ca1358fe8a1959b6602fd603327d37baf57b7\npyside6==6.7.2 ; sys_platform != 'linux'\npyside6-addons==6.7.2 ; sys_platform == 'linux'\npyside6-essentials==6.7.2 ; sys_platform == 'linux'\nshiboken6==6.7.2 ; sys_platform == 'linux'\ncachier @ git+https://github.com/blakeNaccarato/cachier@db7f394a553a90944ca25c2d687771006e77a024\ncopier==9.2.0\ncyclopts==2.7.1\ndebugpy==1.8.2\ndill==0.3.7\ndocutils==0.21.2\ndulwich==0.22.1\ndvc==3.51.2\nfawltydeps==0.16.0\ngmpy2==2.2.0rc1\nipykernel==6.29.0\nipython==8.25.0\nlibusb==1.0.27\nlinkify-it-py==2.0.3\nloguru==0.7.0\nmatplotlib==3.7.2\nmcculw==1.0.0\nmyst-nb==1.1.0\nmyst-parser==3.0.1\nnbconvert==7.7.3\nnbformat==5.9.2\nnumpy==1.24.4\nnumpydoc==1.7.0\npandas==2.2.2\npandas-stubs==2.2.2.240514\npipdeptree==2.23.0\npipx==1.6.0\nploomber-engine==0.0.30\npre-commit==3.7.1\npydantic==2.6.1\npyqtgraph==0.13.3\npyright==1.1.364\npytest==8.2.2\npytest-cov==5.0.0\npytest-custom-exit-code==0.3.0\npytest-github-actions-annotate-failures==0.2.0\npyusb==1.2.1\npyvisa==1.14.1\npyvisa-py==0.7.2\npyvisa-sim==0.6.0\nruamel-yaml==0.18.6\nruff==0.4.10\nscipy==1.11.2\nsimple-pid==2.0.0\nsnakeviz==2.2.0\nsourcery==1.19.0\nsphinx==7.3.7\nsphinx-autobuild==2024.4.16\nsphinx-autodoc2==0.5.0\nsphinx-book-theme==1.1.3\nsphinx-design==0.6.0\nsphinx-thebe==0.3.1\nsphinx-tippy==0.4.3\nsphinx-togglebutton==0.3.2\nsphinxcontrib-bibtex==2.6.2\nsphinxcontrib-mermaid==0.9.2\nsphinxcontrib-towncrier==0.4.0a0\nsympy==1.12\ntowncrier==23.11.0\nuldaq==1.2.3\nuncertainties==3.1.7\nurllib3==2.2.2\nzeroconf==0.132.2", + "requirements": "# nodeps\n# ? Missing wheels\npyside6==6.7.2 ; sys_platform == 'linux'\npyside6-addons==6.7.2 ; sys_platform == 'linux'\npyside6-essentials==6.7.2 ; sys_platform == 'linux'\nshiboken6==6.7.2 ; sys_platform == 'linux'\n# compilation\n# This file was autogenerated by uv via the following command:\n# uv pip compile --universal --all-extras --exclude-newer 2024-07-18T21:40:09.533221Z --python-version 3.11 --resolution lowest-direct --override requirements/override.txt requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml submodules/boilercore/pyproject.toml\n-e .\n # via -r requirements/dev.in\n-e docs/\n # via -r requirements/dev.in\n-e scripts/\n # via -r requirements/dev.in\n-e submodules/boilercore\n # via\n # --override requirements/override.txt\n # boilerdaq (pyproject.toml)\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq\n # boilerdaq-tests\n-e tests/\n # via -r requirements/dev.in\naccessible-pygments==0.0.5\n # via pydata-sphinx-theme\naiohttp==3.9.5\n # via\n # aiohttp-retry\n # fsspec\n # gcsfs\naiohttp-retry==2.8.3\n # via\n # dvc-http\n # scmrepo\naiosignal==1.3.1\n # via aiohttp\nalabaster==0.7.16\n # via sphinx\namqp==5.2.0\n # via kombu\nannotated-types==0.7.0\n # via pydantic\nantlr4-python3-runtime==4.9.3\n # via\n # hydra-core\n # omegaconf\nanyio==4.4.0\n # via\n # starlette\n # watchfiles\nappdirs==1.4.4\n # via iterative-telemetry\nappnope==0.1.4 ; platform_system == 'Darwin'\n # via ipykernel\nargcomplete==3.4.0\n # via pipx\nastroid==3.2.3\n # via sphinx-autodoc2\nasttokens==2.4.1\n # via stack-data\nasyncssh==2.15.0\n # via scmrepo\natpublic==4.1.0\n # via flufl-lock\nattrs==23.2.0\n # via\n # aiohttp\n # cyclopts\n # dvc\n # dvc-data\n # jsonschema\n # jupyter-cache\n # referencing\n # sqltrie\nbabel==2.15.0\n # via\n # pydata-sphinx-theme\n # sphinx\nbackoff==2.2.1\n # via posthog\nbeautifulsoup4==4.12.3\n # via\n # nbconvert\n # pydata-sphinx-theme\n # sphinx-tippy\nbilliard==4.2.0\n # via celery\nbleach==6.1.0\n # via nbconvert\nblosc2==2.7.0\n # via tables\nbottleneck==1.4.0\n # via pandas\ncachetools==5.4.0\n # via google-auth\ncachier @ git+https://github.com/blakeNaccarato/cachier@db7f394a553a90944ca25c2d687771006e77a024\n # via\n # --override requirements/override.txt\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\ncelery==5.4.0\n # via\n # dvc\n # dvc-task\ncertifi==2024.7.4\n # via requests\ncffi==1.16.0\n # via\n # cryptography\n # pygit2\n # pyzmq\ncfgv==3.4.0\n # via pre-commit\ncharset-normalizer==3.3.2\n # via requests\nclick==8.1.7\n # via\n # celery\n # click-didyoumean\n # click-plugins\n # click-repl\n # jupyter-cache\n # ploomber-engine\n # towncrier\n # typer\n # userpath\n # uvicorn\nclick-didyoumean==0.3.1\n # via celery\nclick-plugins==1.1.1\n # via celery\nclick-repl==0.3.0\n # via celery\ncolorama==0.4.6\n # via\n # click\n # copier\n # debuglater\n # dvc\n # ipython\n # loguru\n # pipx\n # pytest\n # sphinx\n # sphinx-autobuild\n # tqdm\ncomm==0.2.2\n # via ipykernel\nconfigobj==5.0.8\n # via dvc\ncontourpy==1.2.1\n # via matplotlib\ncopier==9.2.0\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\ncoverage==7.6.0\n # via pytest-cov\ncryptography==42.0.8\n # via asyncssh\ncycler==0.12.1\n # via matplotlib\ncyclopts==2.7.1\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\ndebuglater==1.4.4\n # via ploomber-engine\ndebugpy==1.8.2\n # via\n # -r requirements/dev.in\n # ipykernel\ndecorator==5.1.1\n # via\n # gcsfs\n # ipython\ndefusedxml==0.7.1\n # via nbconvert\ndictdiffer==0.9.0\n # via dvc-data\ndill==0.3.8\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # cachier\ndiskcache==5.6.3\n # via dvc-data\ndistlib==0.3.8\n # via virtualenv\ndistro==1.9.0\n # via\n # dvc\n # iterative-telemetry\ndocstring-parser==0.15\n # via cyclopts\ndocutils==0.21.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # myst-parser\n # pybtex-docutils\n # pydata-sphinx-theme\n # rich-rst\n # sphinx\n # sphinx-togglebutton\n # sphinxcontrib-bibtex\ndpath==2.2.0\n # via dvc\ndulwich==0.22.1\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq-tools\n # dvc\n # dvc-studio-client\n # scmrepo\ndunamai==1.21.2 ; python_version < '4'\n # via copier\ndvc==3.51.2\n # via\n # -r requirements/dev.in\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # dvc-gs\ndvc-data==3.15.1\n # via dvc\ndvc-gs==3.0.1\n # via dvc\ndvc-http==2.32.0\n # via dvc\ndvc-objects==5.1.0\n # via\n # dvc\n # dvc-data\ndvc-render==1.0.2\n # via dvc\ndvc-studio-client==0.21.0\n # via dvc\ndvc-task==0.4.0\n # via dvc\nentrypoints==0.4\n # via gto\nexecuting==2.0.1\n # via stack-data\nfastjsonschema==2.20.0\n # via nbformat\nfawltydeps==0.16.0\n # via -r requirements/dev.in\nfilelock==3.15.4\n # via\n # iterative-telemetry\n # virtualenv\nflatten-dict==0.4.2\n # via dvc\nflufl-lock==7.1.1\n # via dvc\nfonttools==4.53.1\n # via matplotlib\nfrozenlist==1.4.1\n # via\n # aiohttp\n # aiosignal\nfsspec==2024.6.1\n # via\n # dvc\n # dvc-data\n # dvc-http\n # dvc-objects\n # gcsfs\n # scmrepo\nfuncy==2.0\n # via\n # copier\n # dvc\n # dvc-data\n # dvc-objects\n # dvc-task\n # gto\n # scmrepo\nfuture==1.0.0\n # via uncertainties\ngcsfs==2024.6.1\n # via dvc-gs\ngitdb==4.0.11\n # via gitpython\ngitpython==3.1.43\n # via scmrepo\ngmpy2==2.2.0rc1\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\ngoogle-api-core==2.19.1\n # via\n # google-cloud-core\n # google-cloud-storage\ngoogle-auth==2.32.0\n # via\n # gcsfs\n # google-api-core\n # google-auth-oauthlib\n # google-cloud-core\n # google-cloud-storage\ngoogle-auth-oauthlib==1.2.1\n # via gcsfs\ngoogle-cloud-core==2.4.1\n # via google-cloud-storage\ngoogle-cloud-storage==2.17.0\n # via gcsfs\ngoogle-crc32c==1.5.0\n # via\n # google-cloud-storage\n # google-resumable-media\ngoogle-resumable-media==2.7.1\n # via google-cloud-storage\ngoogleapis-common-protos==1.63.2\n # via google-api-core\ngrandalf==0.8\n # via dvc\ngreenlet==3.0.3 ; python_version < '3.13' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'WIN32' or platform_machine == 'win32'))))))\n # via sqlalchemy\ngto==1.7.1\n # via dvc\nh11==0.14.0\n # via uvicorn\nhydra-core==1.3.2\n # via dvc\nidentify==2.6.0\n # via pre-commit\nidna==3.7\n # via\n # anyio\n # requests\n # yarl\nifaddr==0.2.0\n # via zeroconf\nimagesize==1.4.1\n # via sphinx\nimportlib-metadata==8.0.0\n # via\n # fawltydeps\n # jupyter-cache\n # myst-nb\nincremental==22.10.0\n # via towncrier\niniconfig==2.0.0\n # via pytest\nipykernel==6.29.0\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # myst-nb\nipython==8.25.0\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\n # ipykernel\n # myst-nb\n # ploomber-engine\nisort==5.13.2 ; python_version >= '3.8'\n # via fawltydeps\niterative-telemetry==0.0.8\n # via dvc\njedi==0.19.1\n # via ipython\njinja2==3.1.4\n # via\n # copier\n # jinja2-ansible-filters\n # myst-parser\n # nbconvert\n # sphinx\n # sphinx-tippy\n # towncrier\njinja2-ansible-filters==1.3.2\n # via copier\njsonschema==4.23.0\n # via nbformat\njsonschema-specifications==2023.12.1\n # via jsonschema\njupyter-cache==1.0.0\n # via myst-nb\njupyter-client==8.6.2\n # via\n # ipykernel\n # nbclient\njupyter-core==5.7.2\n # via\n # ipykernel\n # jupyter-client\n # nbclient\n # nbconvert\n # nbformat\njupyterlab-pygments==0.3.0\n # via nbconvert\nkiwisolver==1.4.5\n # via matplotlib\nkombu==5.3.7\n # via\n # celery\n # dvc\n # dvc-task\nlatexcodec==3.0.0\n # via pybtex\nlibusb==1.0.27\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nlinkify-it-py==2.0.3\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nllvmlite==0.43.0\n # via numba\nloguru==0.7.0\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nmarkdown-it-py==3.0.0\n # via\n # mdit-py-plugins\n # myst-parser\n # rich\nmarkupsafe==2.1.5\n # via\n # jinja2\n # nbconvert\nmatplotlib==3.7.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nmatplotlib-inline==0.1.7\n # via\n # ipykernel\n # ipython\nmcculw==1.0.0\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nmdit-py-plugins==0.4.1\n # via myst-parser\nmdurl==0.1.2\n # via markdown-it-py\nmistune==3.0.2\n # via nbconvert\nmonotonic==1.6\n # via posthog\nmpmath==1.3.0\n # via sympy\nmsgpack==1.0.8\n # via blosc2\nmultidict==6.0.5\n # via\n # aiohttp\n # yarl\nmyst-nb==1.1.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nmyst-parser==3.0.1\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # myst-nb\nnbclient==0.10.0\n # via\n # jupyter-cache\n # myst-nb\n # nbconvert\n # ploomber-engine\nnbconvert==7.7.3\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nnbformat==5.9.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # jupyter-cache\n # myst-nb\n # nbclient\n # nbconvert\n # ploomber-engine\nndindex==1.8\n # via blosc2\nnest-asyncio==1.6.0\n # via ipykernel\nnetworkx==3.3\n # via dvc\nnodeenv==1.9.1\n # via\n # pre-commit\n # pyright\nnumba==0.60.0\n # via pandas\nnumexpr==2.10.1\n # via\n # blosc2\n # pandas\n # tables\nnumpy==1.26.0\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # blosc2\n # boilercore\n # bottleneck\n # contourpy\n # matplotlib\n # numba\n # numexpr\n # pandas\n # pandas-stubs\n # pyqtgraph\n # scipy\n # tables\nnumpydoc==1.7.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\noauthlib==3.2.2\n # via requests-oauthlib\nomegaconf==2.3.0\n # via\n # dvc\n # hydra-core\norjson==3.10.6 ; implementation_name == 'cpython'\n # via sqltrie\npackaging==24.1\n # via\n # copier\n # dunamai\n # dvc\n # hydra-core\n # ipykernel\n # matplotlib\n # nbconvert\n # pip-requirements-parser\n # pipdeptree\n # pipx\n # pkg-about\n # pydata-sphinx-theme\n # pytest\n # sphinx\n # tables\npandas==2.2.2\n # via\n # boilerdaq (pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq\npandas-stubs==2.2.2.240514\n # via -r requirements/dev.in\npandocfilters==1.5.1\n # via nbconvert\nparso==0.8.4\n # via\n # jedi\n # ploomber-engine\npathspec==0.12.1\n # via\n # copier\n # dvc\n # scmrepo\npexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'\n # via ipython\npillow==10.4.0\n # via matplotlib\npip==24.1.2\n # via pipdeptree\npip-requirements-parser==32.0.1\n # via fawltydeps\npipdeptree==2.23.0\n # via -r requirements/dev.in\npipx==1.6.0\n # via\n # boilerdaq-tools (scripts/pyproject.toml)\n # boilerdaq-tools\npkg-about==1.1.7\n # via libusb\nplatformdirs==3.11.0\n # via\n # dvc\n # jupyter-core\n # pipx\n # virtualenv\nploomber-core==0.2.25\n # via ploomber-engine\nploomber-engine==0.0.30\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\npluggy==1.5.0\n # via pytest\nplumbum==1.8.3\n # via copier\nportalocker==2.10.1\n # via cachier\nposthog==3.5.0\n # via ploomber-core\npre-commit==3.7.1\n # via -r requirements/dev.in\nprompt-toolkit==3.0.47\n # via\n # click-repl\n # ipython\n # questionary\nproto-plus==1.24.0\n # via google-api-core\nprotobuf==5.27.2\n # via\n # google-api-core\n # googleapis-common-protos\n # proto-plus\npsutil==6.0.0\n # via\n # dvc\n # flufl-lock\n # ipykernel\nptyprocess==0.7.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'\n # via pexpect\npure-eval==0.2.2\n # via stack-data\npy-cpuinfo==9.0.0\n # via\n # blosc2\n # tables\npyasn1==0.6.0\n # via\n # pyasn1-modules\n # rsa\npyasn1-modules==0.4.0\n # via google-auth\npybtex==0.24.0\n # via\n # pybtex-docutils\n # sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n # via sphinxcontrib-bibtex\npycparser==2.22\n # via cffi\npydantic==2.6.1\n # via\n # boilerdaq (pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq\n # copier\n # fawltydeps\n # gto\npydantic-core==2.16.2\n # via pydantic\npydata-sphinx-theme==0.15.4\n # via sphinx-book-theme\npydot==3.0.1\n # via dvc\npygit2==1.15.1\n # via scmrepo\npygments==2.18.0\n # via\n # accessible-pygments\n # copier\n # ipython\n # nbconvert\n # pydata-sphinx-theme\n # rich\n # sphinx\npygtrie==2.5.0\n # via\n # dvc\n # dvc-data\n # scmrepo\n # sqltrie\npyparsing==3.0.9\n # via\n # dvc\n # grandalf\n # matplotlib\n # pip-requirements-parser\n # pydot\npyqtgraph==0.13.3\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npyright==1.1.364\n # via -r requirements/dev.in\npyside6==6.7.2 ; sys_platform != 'linux'\n # via -r requirements/dev.in\npyside6-addons==6.7.2 ; sys_platform != 'linux'\n # via pyside6\npyside6-essentials==6.7.2 ; sys_platform != 'linux'\n # via\n # pyside6\n # pyside6-addons\npytest==8.2.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilerdaq-tests (tests/pyproject.toml)\n # boilercore\n # boilerdaq-tests\n # pytest-cov\n # pytest-custom-exit-code\n # pytest-github-actions-annotate-failures\npytest-cov==5.0.0\n # via\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq-tests\npytest-custom-exit-code==0.3.0\n # via\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq-tests\npytest-github-actions-annotate-failures==0.2.0\n # via\n # boilerdaq-tests (tests/pyproject.toml)\n # boilerdaq-tests\npython-dateutil==2.9.0.post0\n # via\n # celery\n # jupyter-client\n # matplotlib\n # pandas\n # posthog\npytz==2024.1\n # via pandas\npyusb==1.2.1\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npyvisa==1.14.1\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\n # pyvisa-py\n # pyvisa-sim\npyvisa-py==0.7.2\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npyvisa-sim==0.6.0\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\npywin32==306 ; platform_system == 'Windows' or sys_platform == 'win32' or (platform_python_implementation != 'PyPy' and platform_system == 'Windows') or (platform_python_implementation != 'PyPy' and sys_platform == 'win32')\n # via\n # dvc-task\n # jupyter-core\n # plumbum\n # portalocker\npyyaml==6.0.1\n # via\n # copier\n # jinja2-ansible-filters\n # jupyter-cache\n # myst-nb\n # myst-parser\n # omegaconf\n # ploomber-core\n # pre-commit\n # pybtex\n # pyvisa-sim\npyzmq==26.0.3\n # via\n # ipykernel\n # jupyter-client\nquestionary==1.10.0\n # via copier\nreferencing==0.35.1\n # via\n # jsonschema\n # jsonschema-specifications\nrequests==2.32.3\n # via\n # dvc\n # dvc-studio-client\n # gcsfs\n # google-api-core\n # google-cloud-storage\n # iterative-telemetry\n # posthog\n # requests-oauthlib\n # sphinx\n # sphinx-tippy\nrequests-oauthlib==2.0.0\n # via google-auth-oauthlib\nrich==13.7.1\n # via\n # cyclopts\n # dvc\n # gto\n # rich-rst\n # typer\nrich-rst==1.3.1\n # via cyclopts\nrpds-py==0.19.0\n # via\n # jsonschema\n # referencing\nrsa==4.9\n # via google-auth\nruamel-yaml==0.18.6\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\n # boilerdaq-docs\n # dvc\n # gto\nruamel-yaml-clib==0.2.8 ; python_version < '3.13' and platform_python_implementation == 'CPython'\n # via ruamel-yaml\nruff==0.4.10\n # via -r requirements/dev.in\nscipy==1.11.2\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nscmrepo==3.3.6\n # via\n # dvc\n # gto\nsemver==3.0.2\n # via gto\nsetuptools==71.0.3\n # via\n # cachier\n # dulwich\n # fawltydeps\n # libusb\n # pkg-about\n # sphinx-togglebutton\n # zc-lockfile\nshellingham==1.5.4\n # via typer\nshiboken6==6.7.2 ; sys_platform != 'linux'\n # via\n # pyside6\n # pyside6-addons\n # pyside6-essentials\nshortuuid==1.0.13\n # via\n # dvc\n # dvc-task\nshtab==1.7.1\n # via dvc\nsimple-pid==2.0.0\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nsix==1.16.0\n # via\n # asttokens\n # bleach\n # configobj\n # flatten-dict\n # posthog\n # pybtex\n # python-dateutil\nsmmap==5.0.1\n # via gitdb\nsnakeviz==2.2.0\n # via -r requirements/dev.in\nsniffio==1.3.1\n # via anyio\nsnowballstemmer==2.2.0\n # via sphinx\nsoupsieve==2.5\n # via beautifulsoup4\nsourcery==1.19.0\n # via -r requirements/dev.in\nsphinx==7.3.7\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # myst-nb\n # myst-parser\n # numpydoc\n # pydata-sphinx-theme\n # sphinx-autobuild\n # sphinx-book-theme\n # sphinx-design\n # sphinx-thebe\n # sphinx-tippy\n # sphinx-togglebutton\n # sphinxcontrib-bibtex\n # sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-autodoc2==0.5.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-book-theme==1.1.3\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-design==0.6.0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-thebe==0.3.1\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-tippy==0.4.3\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinx-togglebutton==0.3.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinxcontrib-applehelp==1.0.8\n # via sphinx\nsphinxcontrib-bibtex==2.6.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinxcontrib-devhelp==1.0.6\n # via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n # via sphinx\nsphinxcontrib-jsmath==1.0.1\n # via sphinx\nsphinxcontrib-mermaid==0.9.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsphinxcontrib-qthelp==1.0.7\n # via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n # via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\nsqlalchemy==2.0.31\n # via jupyter-cache\nsqltrie==0.11.0\n # via dvc-data\nstack-data==0.6.3\n # via ipython\nstarlette==0.37.2\n # via sphinx-autobuild\nstringparser==0.7\n # via pyvisa-sim\nsympy==1.12\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\ntables==3.9.2\n # via pandas\ntabulate==0.9.0\n # via\n # dvc\n # gto\n # jupyter-cache\n # numpydoc\ntinycss2==1.3.0\n # via nbconvert\ntomlkit==0.13.0\n # via dvc\ntornado==6.4.1\n # via\n # ipykernel\n # jupyter-client\n # snakeviz\ntowncrier==23.11.0\n # via\n # -r requirements/dev.in\n # sphinxcontrib-towncrier\ntqdm==4.66.4\n # via\n # dvc\n # dvc-data\n # fsspec\n # ploomber-engine\n # scmrepo\ntraitlets==5.14.3\n # via\n # comm\n # ipykernel\n # ipython\n # jupyter-client\n # jupyter-core\n # matplotlib-inline\n # nbclient\n # nbconvert\n # nbformat\ntyper==0.12.3\n # via gto\ntypes-pytz==2024.1.0.20240417\n # via pandas-stubs\ntyping-extensions==4.12.2\n # via\n # asyncssh\n # cyclopts\n # ipython\n # myst-nb\n # pydantic\n # pydantic-core\n # pydata-sphinx-theme\n # pyvisa\n # pyvisa-py\n # pyvisa-sim\n # sphinx-autodoc2\n # sqlalchemy\n # stringparser\n # typer\ntzdata==2024.1\n # via\n # celery\n # pandas\nuc-micro-py==1.0.3\n # via linkify-it-py\nuldaq==1.2.3\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nuncertainties==3.1.7\n # via\n # boilercore (submodules/boilercore/pyproject.toml)\n # boilercore\nurllib3==2.2.2\n # via\n # boilerdaq-docs (docs/pyproject.toml)\n # boilerdaq-docs\n # dulwich\n # requests\nuserpath==1.9.2\n # via pipx\nuvicorn==0.30.1\n # via sphinx-autobuild\nvine==5.1.0\n # via\n # amqp\n # celery\n # kombu\nvirtualenv==20.26.3\n # via pre-commit\nvoluptuous==0.15.2\n # via\n # dvc\n # dvc-studio-client\nwatchdog==4.0.1\n # via cachier\nwatchfiles==0.22.0\n # via sphinx-autobuild\nwcwidth==0.2.13\n # via prompt-toolkit\nwebencodings==0.5.1\n # via\n # bleach\n # tinycss2\nwebsockets==12.0\n # via sphinx-autobuild\nwheel==0.43.0\n # via sphinx-togglebutton\nwin32-setctime==1.1.0 ; sys_platform == 'win32'\n # via loguru\nyarl==1.9.4\n # via aiohttp\nzc-lockfile==3.0.post1\n # via dvc\nzeroconf==0.132.2\n # via\n # boilerdaq (pyproject.toml)\n # boilerdaq\nzipp==3.19.2\n # via importlib-metadata\n" } diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 6bb9101..ae27405 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -6,7 +6,7 @@ pyside6-essentials==6.7.2 ; sys_platform == 'linux' shiboken6==6.7.2 ; sys_platform == 'linux' # compilation # This file was autogenerated by uv via the following command: -# uv pip compile --universal --all-extras --exclude-newer 2024-07-09T22:54:01.158673Z --python-version 3.11 --resolution lowest-direct --override requirements/override.txt requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml submodules/boilercore/pyproject.toml +# uv pip compile --universal --all-extras --exclude-newer 2024-07-18T21:40:09.533221Z --python-version 3.11 --resolution lowest-direct --override requirements/override.txt requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml submodules/boilercore/pyproject.toml -e . # via -r requirements/dev.in -e docs/ @@ -55,7 +55,7 @@ appnope==0.1.4 ; platform_system == 'Darwin' # via ipykernel argcomplete==3.4.0 # via pipx -astroid==3.2.2 +astroid==3.2.3 # via sphinx-autodoc2 asttokens==2.4.1 # via stack-data @@ -92,7 +92,7 @@ blosc2==2.7.0 # via tables bottleneck==1.4.0 # via pandas -cachetools==5.3.3 +cachetools==5.4.0 # via google-auth cachier @ git+https://github.com/blakeNaccarato/cachier@db7f394a553a90944ca25c2d687771006e77a024 # via @@ -155,7 +155,7 @@ copier==9.2.0 # via # boilerdaq-tools (scripts/pyproject.toml) # boilerdaq-tools -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov cryptography==42.0.8 # via asyncssh @@ -576,7 +576,7 @@ pipx==1.6.0 # via # boilerdaq-tools (scripts/pyproject.toml) # boilerdaq-tools -pkg-about==1.1.6 +pkg-about==1.1.7 # via libusb platformdirs==3.11.0 # via @@ -594,7 +594,7 @@ pluggy==1.5.0 # via pytest plumbum==1.8.3 # via copier -portalocker==2.10.0 +portalocker==2.10.1 # via cachier posthog==3.5.0 # via ploomber-core @@ -652,7 +652,7 @@ pydantic-core==2.16.2 # via pydantic pydata-sphinx-theme==0.15.4 # via sphinx-book-theme -pydot==2.0.0 +pydot==3.0.1 # via dvc pygit2==1.15.1 # via scmrepo @@ -819,7 +819,7 @@ scmrepo==3.3.6 # gto semver==3.0.2 # via gto -setuptools==70.3.0 +setuptools==71.0.3 # via # cachier # dulwich @@ -958,7 +958,7 @@ tabulate==0.9.0 # numpydoc tinycss2==1.3.0 # via nbconvert -tomlkit==0.12.5 +tomlkit==0.13.0 # via dvc tornado==6.4.1 # via diff --git a/src/boilerdaq/daq.py b/src/boilerdaq/daq.py index 04ed352..cf0a5b6 100644 --- a/src/boilerdaq/daq.py +++ b/src/boilerdaq/daq.py @@ -10,9 +10,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple, Self from warnings import warn -from boilercore.fits import fit_from_params -from boilercore.modelfun import get_model -from boilercore.models.fit import Fit +from boilercore.fits import Fit, fit_from_params from boilercore.models.geometry import GEOMETRY from boilercore.types import Rod from pyqtgraph import ( @@ -451,7 +449,7 @@ def __init__( self.fit = fit self.source = Param(name, unit) # type: ignore self.results_to_fit = results_to_fit - self.model, _ = get_model(models) + self.model, _ = self.fit.get_models(models) self.x = GEOMETRY.rods[rod] def update(self): diff --git a/src/boilerdaq/models/params.py b/src/boilerdaq/models/params.py index ab60e25..1f798c0 100644 --- a/src/boilerdaq/models/params.py +++ b/src/boilerdaq/models/params.py @@ -2,8 +2,8 @@ from pathlib import Path +from boilercore.fits import Fit from boilercore.models import SynchronizedPathsYamlModel -from boilercore.models.fit import Fit from boilercore.models.geometry import Geometry from pydantic.v1 import Field diff --git a/submodules/boilercore b/submodules/boilercore index 2306b23..780ca13 160000 --- a/submodules/boilercore +++ b/submodules/boilercore @@ -1 +1 @@ -Subproject commit 2306b2324ef805a4df0f211bf7cfec837fe56d9b +Subproject commit 780ca1358fe8a1959b6602fd603327d37baf57b7 diff --git a/tests/root/data/models/modelfun-3.11.dillpickle b/tests/root/data/models/modelfun-3.11.dillpickle index 226325b7b1c42b5eda655faca1d16734902aacc8..effd0698f273d19c7a3c3fc11379f9f35617269f 100644 GIT binary patch literal 1293 zcmZuwO=}ZT6m65(Xllz;D}o?&QA!GuQV zUHCSVR}gX0rHiio4gQ4wAHDazndz%`7Lz;o5eFf9#T)?s5eWKvwKr}kXJg1G*4G7O&hyjyqNK+dID)i@nLU?r#9l_L8X z-xydk0%*2!WWj z?F{LL_0RO)&>+y#-QagYEWTHIuxj}w>pPMAk<~cUg5x4g3UtyAd5%&*vIt&zEQGlF z8UcKcvgh*oAAIbL!dQVlol}H;?awJccJv|c2*qrsGVg(6Qi8XkhQIfEe?Ov2H z-vO%#JJicW%dBF-Lk&hrBvF-Ev?f@G+Yp!Bg(|#DQsOSkumX^(wHIwI)yC8sya6z2 zp-BLgoN$mWZW+r7n3v2%tR6&x+lgMVFl>OsX<1E_otw1APKuzE=1^%NK0O^m;aYqi z^;z&XX<=rz5O*0+5N5CikN(w`M$%h|;dkMIYFb@NQl&f=l;H?Yv|WS>5>oLu9LFo= z)cZhnMbh&Bj8VoVGd@iKIoPOlSM5wgou)JXN|s))2_0V(3NtRN665@W^V9f3^=c|7 zDQ3L;CX)UjXR^9C<7ISzb7#V*)QeOHC!`Ko( literal 63301 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 z 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 f&Z1yc-XbBY5EjwHLj3y8b`?DuLP}yvox*