Loading code/episode_4/poetry.lock +20 −108 Original line number Diff line number Diff line # This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -16,7 +15,6 @@ files = [ name = "aiohttp" version = "3.11.12" description = "Async http client/server framework (asyncio)" category = "main" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -120,7 +118,6 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -135,7 +132,6 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "1.0.0" description = "A light, configurable Sphinx theme" category = "dev" optional = false python-versions = ">=3.10" files = [ Loading @@ -147,7 +143,6 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -159,7 +154,6 @@ files = [ name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -171,7 +165,6 @@ files = [ name = "attrs" version = "25.1.0" description = "Classes Without Boilerplate" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -191,7 +184,6 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -206,7 +198,6 @@ dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest name = "bioblend" version = "1.4.0" description = "Library for interacting with the Galaxy API" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -226,7 +217,6 @@ testing = ["pytest"] name = "certifi" version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ Loading @@ -238,7 +228,6 @@ files = [ name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -250,7 +239,6 @@ files = [ name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false python-versions = ">=3.7" files = [ Loading Loading @@ -352,7 +340,6 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ Loading @@ -364,7 +351,6 @@ files = [ name = "copier" version = "9.4.1" description = "A library for rendering project templates." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -390,7 +376,6 @@ questionary = ">=1.8.1" name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -465,7 +450,6 @@ toml = ["tomli"] name = "deepdiff" version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -484,7 +468,6 @@ optimize = ["orjson"] name = "distlib" version = "0.3.9" description = "Distribution utilities" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -496,7 +479,6 @@ files = [ name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -508,7 +490,6 @@ files = [ name = "dunamai" version = "1.23.0" description = "Dynamic version generation" category = "dev" optional = false python-versions = ">=3.5" files = [ Loading @@ -523,7 +504,6 @@ packaging = ">=20.9" name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" category = "main" optional = false python-versions = ">=3.7" files = [ Loading @@ -538,7 +518,6 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.17.0" description = "A platform independent file lock." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -555,7 +534,6 @@ typing = ["typing-extensions (>=4.12.2)"] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -657,7 +635,6 @@ files = [ name = "funcy" version = "2.0" description = "A fancy and practical functional tools" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -669,7 +646,6 @@ files = [ name = "identify" version = "2.6.6" description = "File identification library for Python" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -684,7 +660,6 @@ license = ["ukkonen"] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false python-versions = ">=3.6" files = [ Loading @@ -699,7 +674,6 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ Loading @@ -711,7 +685,6 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" category = "main" optional = false python-versions = ">=3.7" files = [ Loading @@ -723,7 +696,6 @@ files = [ name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." category = "dev" optional = false python-versions = ">=3.7" files = [ Loading @@ -741,7 +713,6 @@ i18n = ["Babel (>=2.7)"] name = "jinja2-ansible-filters" version = "1.3.2" description = "A port of Ansible's jinja2 filters without requiring ansible core." category = "dev" optional = false python-versions = "*" files = [ Loading @@ -760,7 +731,6 @@ test = ["pytest", "pytest-cov"] name = "libsass" version = "0.23.0" description = "Sass for Python: A straightforward binding of libsass for Python." category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -776,7 +746,6 @@ files = [ name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -847,7 +816,6 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." category = "main" optional = false python-versions = ">=3.6" files = [ Loading @@ -859,7 +827,6 @@ files = [ name = "more-itertools" version = "10.6.0" description = "More routines for operating on iterables, beyond itertools" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -871,7 +838,6 @@ files = [ name = "msgpack" version = "1.1.0" description = "MessagePack serializer" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -945,7 +911,6 @@ files = [ name = "multidict" version = "6.1.0" description = "multidict implementation" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -1050,7 +1015,6 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} name = "mypy" version = "1.15.0" description = "Optional static typing for Python" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -1104,7 +1068,6 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." category = "dev" optional = false python-versions = ">=3.5" files = [ Loading @@ -1116,7 +1079,6 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ Loading @@ -1128,7 +1090,6 @@ files = [ name = "nova-galaxy" version = "0.7.0" description = "Utilties for accessing the ORNL Galaxy instance" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ Loading @@ -1143,7 +1104,6 @@ tomli = ">=2.0.2,<3.0.0" name = "nova-mvvm" version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ Loading @@ -1164,7 +1124,6 @@ pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] name = "nova-trame" version = "0.14.2" description = "A Python Package for injecting curated themes and custom components into Trame applications" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ Loading @@ -1185,7 +1144,6 @@ trame-vuetify = "*" name = "orderly-set" version = "5.3.0" description = "Orderly set" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1197,7 +1155,6 @@ files = [ name = "packaging" version = "24.2" description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1209,7 +1166,6 @@ files = [ name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1221,7 +1177,6 @@ files = [ name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1238,7 +1193,6 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1254,7 +1208,6 @@ testing = ["pytest", "pytest-benchmark"] name = "plumbum" version = "1.9.0" description = "Plumbum: shell combinators library" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1275,7 +1228,6 @@ test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -1290,7 +1242,6 @@ six = ">=1.5.2" name = "pre-commit" version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1309,7 +1260,6 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" category = "dev" optional = false python-versions = ">=3.8.0" files = [ Loading @@ -1324,7 +1274,6 @@ wcwidth = "*" name = "propcache" version = "0.2.1" description = "Accelerated property cache" category = "main" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -1416,7 +1365,6 @@ files = [ name = "pydantic" version = "2.10.6" description = "Data validation using Python type hints" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1437,7 +1385,6 @@ timezone = ["tzdata"] name = "pydantic-core" version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -1550,7 +1497,6 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1565,7 +1511,6 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1588,7 +1533,6 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments name = "pytest-asyncio" version = "0.25.3" description = "Pytest support for asyncio" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -1607,7 +1551,6 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] name = "pywin32" version = "308" description = "Python for Window Extensions" category = "dev" optional = false python-versions = "*" files = [ Loading Loading @@ -1635,7 +1578,6 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -1698,7 +1640,6 @@ files = [ name = "questionary" version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1713,7 +1654,6 @@ prompt_toolkit = ">=2.0,<4.0" name = "requests" version = "2.32.3" description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1735,7 +1675,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ Loading @@ -1748,37 +1687,35 @@ requests = ">=2.0.1,<3.0.0" [[package]] name = "ruff" version = "0.9.4" version = "0.9.5" description = "An extremely fast Python linter and code formatter, written in Rust." category = "dev" optional = false python-versions = ">=3.7" files = [ {file = "ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706"}, {file = "ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf"}, {file = "ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0"}, {file = "ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402"}, {file = "ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e"}, {file = "ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41"}, {file = "ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7"}, {file = "ruff-0.9.5-py3-none-linux_armv6l.whl", hash = "sha256:d466d2abc05f39018d53f681fa1c0ffe9570e6d73cde1b65d23bb557c846f442"}, {file = "ruff-0.9.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38840dbcef63948657fa7605ca363194d2fe8c26ce8f9ae12eee7f098c85ac8a"}, {file = "ruff-0.9.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d56ba06da53536b575fbd2b56517f6f95774ff7be0f62c80b9e67430391eeb36"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7cb2a01da08244c50b20ccfaeb5972e4228c3c3a1989d3ece2bc4b1f996001"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:96d5c76358419bc63a671caac70c18732d4fd0341646ecd01641ddda5c39ca0b"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deb8304636ed394211f3a6d46c0e7d9535b016f53adaa8340139859b2359a070"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:df455000bf59e62b3e8c7ba5ed88a4a2bc64896f900f311dc23ff2dc38156440"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de92170dfa50c32a2b8206a647949590e752aca8100a0f6b8cefa02ae29dce80"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d28532d73b1f3f627ba88e1456f50748b37f3a345d2be76e4c653bec6c3e393"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c746d7d1df64f31d90503ece5cc34d7007c06751a7a3bbeee10e5f2463d52d2"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11417521d6f2d121fda376f0d2169fb529976c544d653d1d6044f4c5562516ee"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b9d71c3879eb32de700f2f6fac3d46566f644a91d3130119a6378f9312a38e1"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2e36c61145e70febcb78483903c43444c6b9d40f6d2f800b5552fec6e4a7bb9a"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2f71d09aeba026c922aa7aa19a08d7bd27c867aedb2f74285a2639644c1c12f5"}, {file = "ruff-0.9.5-py3-none-win32.whl", hash = "sha256:134f958d52aa6fdec3b294b8ebe2320a950d10c041473c4316d2e7d7c2544723"}, {file = "ruff-0.9.5-py3-none-win_amd64.whl", hash = "sha256:78cc6067f6d80b6745b67498fb84e87d32c6fc34992b52bffefbdae3442967d6"}, {file = "ruff-0.9.5-py3-none-win_arm64.whl", hash = "sha256:18a29f1a005bddb229e580795627d297dfa99f16b30c7039e73278cf6b5f9fa9"}, {file = "ruff-0.9.5.tar.gz", hash = "sha256:11aecd7a633932875ab3cb05a484c99970b9d52606ce9ea912b690b02653d56c"}, ] [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ Loading @@ -1790,7 +1727,6 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." category = "dev" optional = false python-versions = "*" files = [ Loading @@ -1802,7 +1738,6 @@ files = [ name = "sphinx" version = "8.1.3" description = "Python documentation generator" category = "dev" optional = false python-versions = ">=3.10" files = [ Loading Loading @@ -1838,7 +1773,6 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools name = "sphinx-rtd-theme" version = "3.0.2" description = "Read the Docs theme for Sphinx" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1858,7 +1792,6 @@ dev = ["bump2version", "transifex-client", "twine", "wheel"] name = "sphinxcontrib-applehelp" version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1875,7 +1808,6 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1892,7 +1824,6 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1909,7 +1840,6 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" category = "dev" optional = false python-versions = ">=2.7" files = [ Loading @@ -1924,7 +1854,6 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" category = "dev" optional = false python-versions = ">=3.5" files = [ Loading @@ -1939,7 +1868,6 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." category = "dev" optional = false python-versions = "*" files = [ Loading @@ -1955,7 +1883,6 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1972,7 +1899,6 @@ test = ["defusedxml (>=0.7.1)", "pytest"] name = "sphinxcontrib-serializinghtml" version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1989,7 +1915,6 @@ test = ["pytest"] name = "tinydb" version = "4.8.2" description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" category = "main" optional = false python-versions = "<4.0,>=3.8" files = [ Loading @@ -2001,7 +1926,6 @@ files = [ name = "tomli" version = "2.2.1" description = "A lil' TOML parser" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -2043,7 +1967,6 @@ files = [ name = "trame" version = "3.8.0" description = "Trame, a framework to build applications in plain Python" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2065,7 +1988,6 @@ jupyter = ["jupyterlab"] name = "trame-client" version = "3.5.2" description = "Internal client of trame" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2081,7 +2003,6 @@ test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] name = "trame-server" version = "3.3.0" description = "Internal server side implementation of trame" category = "main" optional = false python-versions = ">=3.7" files = [ Loading @@ -2100,7 +2021,6 @@ dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] name = "trame-vega" version = "2.1.1" description = "Vega widget for trame" category = "main" optional = false python-versions = "*" files = [ Loading @@ -2115,7 +2035,6 @@ trame-client = "*" name = "trame-vuetify" version = "2.8.1" description = "Vuetify widgets for trame" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2133,7 +2052,6 @@ dev = ["pre-commit", "pytest", "ruff"] name = "tuspy" version = "1.1.0" description = "A Python client for the tus resumable upload protocol -> http://tus.io" category = "main" optional = false python-versions = ">=3.5.3" files = [ Loading @@ -2154,7 +2072,6 @@ test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", " name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -2166,7 +2083,6 @@ files = [ name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2184,7 +2100,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.1" description = "Virtual Python Environment builder" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -2205,7 +2120,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -2217,7 +2131,6 @@ files = [ name = "wslink" version = "2.2.2" description = "Python/JavaScript library for communicating over WebSocket" category = "main" optional = false python-versions = "*" files = [ Loading @@ -2236,7 +2149,6 @@ ssl = ["cryptography"] name = "yarl" version = "1.18.3" description = "Yet another URL library" category = "main" optional = false python-versions = ">=3.9" files = [ Loading code/episode_4/src/nova_tutorial/app/models/fractal.py +4 −1 Original line number Diff line number Diff line import os import base64 from base64 import b64encode from typing import Literal from pydantic import BaseModel, Field Loading Loading @@ -32,4 +32,7 @@ class Fractal(BaseModel): output = tool.run(data_store, params) output.get_dataset("output").download("tmp.png") with open("tmp.png", "rb") as image_file: self.image_data = f"data:image/png;base64,{b64encode(image_file.read()).decode()}" print("Fractal tool finished successfully.") code/episode_4/src/nova_tutorial/app/view_models/main.py +0 −2 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ class MainViewModel(): def __init__(self, model: MainModel, binding: BindingInterface): self.model = model self.image_path = "" # here we create a bind that connects ViewModel with View. It returns a communicator object, Loading @@ -33,5 +32,4 @@ class MainViewModel(): def run_fractal(self) -> None: self.model.fractal.run_fractal_tool() self.image_path = self.model.fractal.image_data self.update_view() code/episode_4/src/nova_tutorial/app/views/fractal_tab.py +1 −6 Original line number Diff line number Diff line Loading @@ -15,9 +15,4 @@ class FractalTab: "Run Fractal", click=self.view_model.run_fractal # calls the run_fractal_tool method ) vuetify.VImg( v_model="config.image_path", src=self.view_model.image_path, max_height="400", max_width="400" ) No newline at end of file vuetify.VImg(src=("config.fractal.image_data",), height="400", width="400") code/episode_7/poetry.lock +216 −217 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
code/episode_4/poetry.lock +20 −108 Original line number Diff line number Diff line # This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -16,7 +15,6 @@ files = [ name = "aiohttp" version = "3.11.12" description = "Async http client/server framework (asyncio)" category = "main" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -120,7 +118,6 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -135,7 +132,6 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "1.0.0" description = "A light, configurable Sphinx theme" category = "dev" optional = false python-versions = ">=3.10" files = [ Loading @@ -147,7 +143,6 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -159,7 +154,6 @@ files = [ name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -171,7 +165,6 @@ files = [ name = "attrs" version = "25.1.0" description = "Classes Without Boilerplate" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -191,7 +184,6 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -206,7 +198,6 @@ dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest name = "bioblend" version = "1.4.0" description = "Library for interacting with the Galaxy API" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -226,7 +217,6 @@ testing = ["pytest"] name = "certifi" version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ Loading @@ -238,7 +228,6 @@ files = [ name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -250,7 +239,6 @@ files = [ name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false python-versions = ">=3.7" files = [ Loading Loading @@ -352,7 +340,6 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ Loading @@ -364,7 +351,6 @@ files = [ name = "copier" version = "9.4.1" description = "A library for rendering project templates." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -390,7 +376,6 @@ questionary = ">=1.8.1" name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -465,7 +450,6 @@ toml = ["tomli"] name = "deepdiff" version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -484,7 +468,6 @@ optimize = ["orjson"] name = "distlib" version = "0.3.9" description = "Distribution utilities" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -496,7 +479,6 @@ files = [ name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -508,7 +490,6 @@ files = [ name = "dunamai" version = "1.23.0" description = "Dynamic version generation" category = "dev" optional = false python-versions = ">=3.5" files = [ Loading @@ -523,7 +504,6 @@ packaging = ">=20.9" name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" category = "main" optional = false python-versions = ">=3.7" files = [ Loading @@ -538,7 +518,6 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.17.0" description = "A platform independent file lock." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -555,7 +534,6 @@ typing = ["typing-extensions (>=4.12.2)"] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -657,7 +635,6 @@ files = [ name = "funcy" version = "2.0" description = "A fancy and practical functional tools" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -669,7 +646,6 @@ files = [ name = "identify" version = "2.6.6" description = "File identification library for Python" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -684,7 +660,6 @@ license = ["ukkonen"] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false python-versions = ">=3.6" files = [ Loading @@ -699,7 +674,6 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ Loading @@ -711,7 +685,6 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" category = "main" optional = false python-versions = ">=3.7" files = [ Loading @@ -723,7 +696,6 @@ files = [ name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." category = "dev" optional = false python-versions = ">=3.7" files = [ Loading @@ -741,7 +713,6 @@ i18n = ["Babel (>=2.7)"] name = "jinja2-ansible-filters" version = "1.3.2" description = "A port of Ansible's jinja2 filters without requiring ansible core." category = "dev" optional = false python-versions = "*" files = [ Loading @@ -760,7 +731,6 @@ test = ["pytest", "pytest-cov"] name = "libsass" version = "0.23.0" description = "Sass for Python: A straightforward binding of libsass for Python." category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -776,7 +746,6 @@ files = [ name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -847,7 +816,6 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." category = "main" optional = false python-versions = ">=3.6" files = [ Loading @@ -859,7 +827,6 @@ files = [ name = "more-itertools" version = "10.6.0" description = "More routines for operating on iterables, beyond itertools" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -871,7 +838,6 @@ files = [ name = "msgpack" version = "1.1.0" description = "MessagePack serializer" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -945,7 +911,6 @@ files = [ name = "multidict" version = "6.1.0" description = "multidict implementation" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -1050,7 +1015,6 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} name = "mypy" version = "1.15.0" description = "Optional static typing for Python" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -1104,7 +1068,6 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." category = "dev" optional = false python-versions = ">=3.5" files = [ Loading @@ -1116,7 +1079,6 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ Loading @@ -1128,7 +1090,6 @@ files = [ name = "nova-galaxy" version = "0.7.0" description = "Utilties for accessing the ORNL Galaxy instance" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ Loading @@ -1143,7 +1104,6 @@ tomli = ">=2.0.2,<3.0.0" name = "nova-mvvm" version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ Loading @@ -1164,7 +1124,6 @@ pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] name = "nova-trame" version = "0.14.2" description = "A Python Package for injecting curated themes and custom components into Trame applications" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ Loading @@ -1185,7 +1144,6 @@ trame-vuetify = "*" name = "orderly-set" version = "5.3.0" description = "Orderly set" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1197,7 +1155,6 @@ files = [ name = "packaging" version = "24.2" description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1209,7 +1166,6 @@ files = [ name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1221,7 +1177,6 @@ files = [ name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1238,7 +1193,6 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1254,7 +1208,6 @@ testing = ["pytest", "pytest-benchmark"] name = "plumbum" version = "1.9.0" description = "Plumbum: shell combinators library" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1275,7 +1228,6 @@ test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -1290,7 +1242,6 @@ six = ">=1.5.2" name = "pre-commit" version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1309,7 +1260,6 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" category = "dev" optional = false python-versions = ">=3.8.0" files = [ Loading @@ -1324,7 +1274,6 @@ wcwidth = "*" name = "propcache" version = "0.2.1" description = "Accelerated property cache" category = "main" optional = false python-versions = ">=3.9" files = [ Loading Loading @@ -1416,7 +1365,6 @@ files = [ name = "pydantic" version = "2.10.6" description = "Data validation using Python type hints" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1437,7 +1385,6 @@ timezone = ["tzdata"] name = "pydantic-core" version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -1550,7 +1497,6 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1565,7 +1511,6 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1588,7 +1533,6 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments name = "pytest-asyncio" version = "0.25.3" description = "Pytest support for asyncio" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -1607,7 +1551,6 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] name = "pywin32" version = "308" description = "Python for Window Extensions" category = "dev" optional = false python-versions = "*" files = [ Loading Loading @@ -1635,7 +1578,6 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -1698,7 +1640,6 @@ files = [ name = "questionary" version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1713,7 +1654,6 @@ prompt_toolkit = ">=2.0,<4.0" name = "requests" version = "2.32.3" description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -1735,7 +1675,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ Loading @@ -1748,37 +1687,35 @@ requests = ">=2.0.1,<3.0.0" [[package]] name = "ruff" version = "0.9.4" version = "0.9.5" description = "An extremely fast Python linter and code formatter, written in Rust." category = "dev" optional = false python-versions = ">=3.7" files = [ {file = "ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706"}, {file = "ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf"}, {file = "ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214"}, {file = "ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c"}, {file = "ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0"}, {file = "ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402"}, {file = "ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e"}, {file = "ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41"}, {file = "ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7"}, {file = "ruff-0.9.5-py3-none-linux_armv6l.whl", hash = "sha256:d466d2abc05f39018d53f681fa1c0ffe9570e6d73cde1b65d23bb557c846f442"}, {file = "ruff-0.9.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38840dbcef63948657fa7605ca363194d2fe8c26ce8f9ae12eee7f098c85ac8a"}, {file = "ruff-0.9.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d56ba06da53536b575fbd2b56517f6f95774ff7be0f62c80b9e67430391eeb36"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7cb2a01da08244c50b20ccfaeb5972e4228c3c3a1989d3ece2bc4b1f996001"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:96d5c76358419bc63a671caac70c18732d4fd0341646ecd01641ddda5c39ca0b"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deb8304636ed394211f3a6d46c0e7d9535b016f53adaa8340139859b2359a070"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:df455000bf59e62b3e8c7ba5ed88a4a2bc64896f900f311dc23ff2dc38156440"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de92170dfa50c32a2b8206a647949590e752aca8100a0f6b8cefa02ae29dce80"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d28532d73b1f3f627ba88e1456f50748b37f3a345d2be76e4c653bec6c3e393"}, {file = "ruff-0.9.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c746d7d1df64f31d90503ece5cc34d7007c06751a7a3bbeee10e5f2463d52d2"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11417521d6f2d121fda376f0d2169fb529976c544d653d1d6044f4c5562516ee"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b9d71c3879eb32de700f2f6fac3d46566f644a91d3130119a6378f9312a38e1"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2e36c61145e70febcb78483903c43444c6b9d40f6d2f800b5552fec6e4a7bb9a"}, {file = "ruff-0.9.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2f71d09aeba026c922aa7aa19a08d7bd27c867aedb2f74285a2639644c1c12f5"}, {file = "ruff-0.9.5-py3-none-win32.whl", hash = "sha256:134f958d52aa6fdec3b294b8ebe2320a950d10c041473c4316d2e7d7c2544723"}, {file = "ruff-0.9.5-py3-none-win_amd64.whl", hash = "sha256:78cc6067f6d80b6745b67498fb84e87d32c6fc34992b52bffefbdae3442967d6"}, {file = "ruff-0.9.5-py3-none-win_arm64.whl", hash = "sha256:18a29f1a005bddb229e580795627d297dfa99f16b30c7039e73278cf6b5f9fa9"}, {file = "ruff-0.9.5.tar.gz", hash = "sha256:11aecd7a633932875ab3cb05a484c99970b9d52606ce9ea912b690b02653d56c"}, ] [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ Loading @@ -1790,7 +1727,6 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." category = "dev" optional = false python-versions = "*" files = [ Loading @@ -1802,7 +1738,6 @@ files = [ name = "sphinx" version = "8.1.3" description = "Python documentation generator" category = "dev" optional = false python-versions = ">=3.10" files = [ Loading Loading @@ -1838,7 +1773,6 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools name = "sphinx-rtd-theme" version = "3.0.2" description = "Read the Docs theme for Sphinx" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -1858,7 +1792,6 @@ dev = ["bump2version", "transifex-client", "twine", "wheel"] name = "sphinxcontrib-applehelp" version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1875,7 +1808,6 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1892,7 +1824,6 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1909,7 +1840,6 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" category = "dev" optional = false python-versions = ">=2.7" files = [ Loading @@ -1924,7 +1854,6 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" category = "dev" optional = false python-versions = ">=3.5" files = [ Loading @@ -1939,7 +1868,6 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." category = "dev" optional = false python-versions = "*" files = [ Loading @@ -1955,7 +1883,6 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1972,7 +1899,6 @@ test = ["defusedxml (>=0.7.1)", "pytest"] name = "sphinxcontrib-serializinghtml" version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" category = "dev" optional = false python-versions = ">=3.9" files = [ Loading @@ -1989,7 +1915,6 @@ test = ["pytest"] name = "tinydb" version = "4.8.2" description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" category = "main" optional = false python-versions = "<4.0,>=3.8" files = [ Loading @@ -2001,7 +1926,6 @@ files = [ name = "tomli" version = "2.2.1" description = "A lil' TOML parser" category = "main" optional = false python-versions = ">=3.8" files = [ Loading Loading @@ -2043,7 +1967,6 @@ files = [ name = "trame" version = "3.8.0" description = "Trame, a framework to build applications in plain Python" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2065,7 +1988,6 @@ jupyter = ["jupyterlab"] name = "trame-client" version = "3.5.2" description = "Internal client of trame" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2081,7 +2003,6 @@ test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] name = "trame-server" version = "3.3.0" description = "Internal server side implementation of trame" category = "main" optional = false python-versions = ">=3.7" files = [ Loading @@ -2100,7 +2021,6 @@ dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] name = "trame-vega" version = "2.1.1" description = "Vega widget for trame" category = "main" optional = false python-versions = "*" files = [ Loading @@ -2115,7 +2035,6 @@ trame-client = "*" name = "trame-vuetify" version = "2.8.1" description = "Vuetify widgets for trame" category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2133,7 +2052,6 @@ dev = ["pre-commit", "pytest", "ruff"] name = "tuspy" version = "1.1.0" description = "A Python client for the tus resumable upload protocol -> http://tus.io" category = "main" optional = false python-versions = ">=3.5.3" files = [ Loading @@ -2154,7 +2072,6 @@ test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", " name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" category = "main" optional = false python-versions = ">=3.8" files = [ Loading @@ -2166,7 +2083,6 @@ files = [ name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=3.9" files = [ Loading @@ -2184,7 +2100,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.1" description = "Virtual Python Environment builder" category = "dev" optional = false python-versions = ">=3.8" files = [ Loading @@ -2205,7 +2120,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" category = "dev" optional = false python-versions = "*" files = [ Loading @@ -2217,7 +2131,6 @@ files = [ name = "wslink" version = "2.2.2" description = "Python/JavaScript library for communicating over WebSocket" category = "main" optional = false python-versions = "*" files = [ Loading @@ -2236,7 +2149,6 @@ ssl = ["cryptography"] name = "yarl" version = "1.18.3" description = "Yet another URL library" category = "main" optional = false python-versions = ">=3.9" files = [ Loading
code/episode_4/src/nova_tutorial/app/models/fractal.py +4 −1 Original line number Diff line number Diff line import os import base64 from base64 import b64encode from typing import Literal from pydantic import BaseModel, Field Loading Loading @@ -32,4 +32,7 @@ class Fractal(BaseModel): output = tool.run(data_store, params) output.get_dataset("output").download("tmp.png") with open("tmp.png", "rb") as image_file: self.image_data = f"data:image/png;base64,{b64encode(image_file.read()).decode()}" print("Fractal tool finished successfully.")
code/episode_4/src/nova_tutorial/app/view_models/main.py +0 −2 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ class MainViewModel(): def __init__(self, model: MainModel, binding: BindingInterface): self.model = model self.image_path = "" # here we create a bind that connects ViewModel with View. It returns a communicator object, Loading @@ -33,5 +32,4 @@ class MainViewModel(): def run_fractal(self) -> None: self.model.fractal.run_fractal_tool() self.image_path = self.model.fractal.image_data self.update_view()
code/episode_4/src/nova_tutorial/app/views/fractal_tab.py +1 −6 Original line number Diff line number Diff line Loading @@ -15,9 +15,4 @@ class FractalTab: "Run Fractal", click=self.view_model.run_fractal # calls the run_fractal_tool method ) vuetify.VImg( v_model="config.image_path", src=self.view_model.image_path, max_height="400", max_width="400" ) No newline at end of file vuetify.VImg(src=("config.fractal.image_data",), height="400", width="400")
code/episode_7/poetry.lock +216 −217 File changed.Preview size limit exceeded, changes collapsed. Show changes