From b1f4014ce96b507b2108ea4fdc7a7351e83ffedd Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Thu, 15 Aug 2024 11:10:13 +0200 Subject: [PATCH 01/10] First attempt at moving snippets to sepearate files --- .../Snippets/lesson1/snip.NewModel.main-1.any | 26 + A_Getting_started_anyscript/lesson1.md | 77 +- conftest.py | 20 + pixi.lock | 1165 +++++++++++++++++ pixi.toml | 13 + 5 files changed, 1264 insertions(+), 37 deletions(-) create mode 100644 A_Getting_started_anyscript/Snippets/lesson1/snip.NewModel.main-1.any create mode 100644 conftest.py diff --git a/A_Getting_started_anyscript/Snippets/lesson1/snip.NewModel.main-1.any b/A_Getting_started_anyscript/Snippets/lesson1/snip.NewModel.main-1.any new file mode 100644 index 00000000..aee98e16 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson1/snip.NewModel.main-1.any @@ -0,0 +1,26 @@ +// Todo: Write a small description of your model here + +Main = { + //# BEGIN SNIPPET 1 + // The actual body model goes in this folder + AnyFolder §ArmModel§ = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + + // Todo: Add points for grounding of the model here + + }; + + // Todo: Add the model elements such as + // segments, joints, and muscles here. + + }; + //# END SNIPPET 1 + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/lesson1.md b/A_Getting_started_anyscript/lesson1.md index 1208875f..34c2ce58 100644 --- a/A_Getting_started_anyscript/lesson1.md +++ b/A_Getting_started_anyscript/lesson1.md @@ -23,65 +23,61 @@ for your model, based on a built-in template. Let's have a look at what the system has generated for you. If you ignore most of the text and comments (green lines beginning with {literal}`//`), the overall structure of the model looks like this: +:::{admonition} tl;dr +:class: tip margin dropdown +When you load the model, the name +assigned to a pair of braces, and all the contents between the braces will show up as +folders and sub-folders in the Model Tree. + +The code creates two objects - `MyModel` & `MyStudy` - which perform very +specific functions, which depend on the pre-preprogrammed object types (`AnyFolder` & `AnyBodyStudy`) +used to create these objects. These inbuilt object types are also known as CLASSES. +::: + ```AnyScriptDoc Main = {   AnyFolder MyModel = { -   }; // MyModel +   };   AnyBodyStudy MyStudy = {   }; -}; // Main +}; ``` -What you see is a hierarchy of braces - the outermost pair of braces is named "Main". -Everything else in the model goes between these braces. - -**When you load the model, the name -assigned to a pair of braces, and all the contents between the braces will show up as -folders and sub-folders in the Model Tree.** -**The code creates two objects - "MyModel" & "MyStudy" - which perform very -specific functions, which depend on the pre-preprogrammed object templates** (`AnyFolder` & `AnyBodyStudy`) -**used to create these objects. These inbuilt object templates are also known as CLASSES.** +What you see is a hierarchy of braces - the outermost pair of braces is named `Main = {`. +Everything else in the model goes between these braces. -"MyModel" (of type `AnyFolder`) is simply an +"MyModel" (of class type `AnyFolder`) is simply an organizational folder for containing the entire model you are going to build. Let us change the folder name "MyModel" to "ArmModel". -The object named "MyStudy" (of type `AnyBodyStudy`) is a collection of +The object named "MyStudy" (of class type `AnyBodyStudy`) is a collection of simulation tasks that you want to perform with your model. The {doc}`Study of Studies <../A_study_of_studies/intro>` tutorial contains much more information on simulation studies. -:::{warning} -Rename "MyStudy" to "ArmModelStudy", and replace all occurences of "MyModel" with "ArmModel". -All changes to your model will be highlighted in red hereon. +:::{attention} +:class: margin +All changes you need to do in your model will be highlighted in red in future tutorials. ::: -## What does this file contain so far? - -```AnyScriptDoc - // The actual body model goes in this folder -  AnyFolder §ArmModel§ = { - - // Global Reference Frame -  AnyFixedRefFrame GlobalRef = { +**👉 Now** reename `MyStudy` to `ArmModelStudy`, and replace all occurences of `MyModel` with `ArmModel`. -   // Todo: Add points for grounding -   // of the model here -}; // Global reference frame -   // Todo. Add the model elements such as -   // segments, joints, and muscles here. +## What does this file contain so far? -}; // §ArmModel§ +```{literalinclude} Snippets/lesson1/snip.NewModel.main-1.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` -Within "ArmModel" is an object named "GlobalRef", created with the `AnyFixedRefFrame` class. This object is the global reference frame for your model. +Within `ArmModel = {}` is an object named `GlobalRef`, created with the `AnyFixedRefFrame` class. This object is the global reference frame for your model. -You will notice "to do" comments inside the braces, to which we will return later. +You will notice "Todo:" comments inside the braces, to which we will return later. :::{note} The model objects that you create henceforth must be placed within the "ArmModel" folder and should go between its @@ -96,7 +92,7 @@ refer to {ref}`this section ` from a previous tutorial. You may get message similar to the one below, in the Output Window. ```none -Loading Main : "C:\\...\\NewModel.main.any" +Loading Main : "C:\..\NewModel.main.any" Scanning... Parsing... Constructing model tree... @@ -105,7 +101,8 @@ Evaluating constants... Configuring model... Evaluating model... Loaded successfully. -Elapsed Time : 0.063000 +Elapsed Time : 0.030000 + ``` ## Basic troubleshooting @@ -113,15 +110,21 @@ Elapsed Time : 0.063000 If you mistype something, you will get an error message. A common mistake is to forget a semicolon somewhere. Try removing a semicolon and re-load the model, which may give you an error message like this: +:::{attention} +:class: margin +The error messages may look different depending on which semi-colon you removed. +Missing semicolons can be tricky, so keep that in mind. +::: + ```none ERROR(SCR.PRS11) : C:\\...\\NewModel.main.any(26) : 'EOF' unexpected Model loading skipped ``` -**The message contains clickable links for both error code and the location of the error in your file. Upon clicking the file link, the text cursor +The message contains clickable links for both error code and the location of the error in your file. Upon clicking the file link, the text cursor jumps to the exact problematic line in the file. Remember that an error can sometimes be caused by something you mistyped earlier -in the file.** +in the file. -Clicking the error code, e.g: ERROR(SCR.PRS11) opens a pop-up window with a complete explanation: +Clicking the error code, e.g: `ERROR(SCR.PRS11)` opens a pop-up window with a complete explanation: ```{image} _static/lesson1/image5.png ``` diff --git a/conftest.py b/conftest.py new file mode 100644 index 00000000..9cb91d94 --- /dev/null +++ b/conftest.py @@ -0,0 +1,20 @@ +from anypytools.pytest_plugin import AnyTestFile +import re + + +# import debugpy +# debugpy.listen(5679) +# print("Waiting for debugger attach") +# debugpy.wait_for_client() + +MAIN_REGEX = re.compile(r"Main\s*=\s*{") + +def pytest_collect_file(file_path, parent): + """ Add hook to collect Snippets files for testing""" + if file_path.suffix == ".any": + if "Snippet" in file_path.parts[-3]: + return AnyTestFile.from_parent(parent, path=file_path) + if "Downloads" in file_path.parts[-2]: + content = file_path.read_text() + if MAIN_REGEX.search(content): + return AnyTestFile.from_parent(parent, path=file_path) \ No newline at end of file diff --git a/pixi.lock b/pixi.lock index 808e7ae5..0ba4e00f 100644 --- a/pixi.lock +++ b/pixi.lock @@ -52,6 +52,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -110,6 +111,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py311h82a398c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 @@ -122,6 +124,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyphen-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda @@ -225,6 +228,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh7428d3b_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda @@ -283,6 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py311h5592be9_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 @@ -295,6 +300,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyphen-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.9-h631f459_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-4_cp311.conda @@ -348,6 +354,392 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + test: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/anypytools-1.12.2-py311h38be061_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py311ha8e6434_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py311h9547e67_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.5-py311hf86e51f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.1-py311h61187de_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h8fdd7da_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsass-0.22.0-py311hb755f60_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/livereload-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py311h459d7ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py311h74b4f7c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py311hed25524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py311h82a398c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.3.8-py_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydyf-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments_anyscript-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphen-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h61187de_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-autobuild-2021.3.14-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-1.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-simplepdf-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-togglebutton-0.3.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-youtube-1.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxext-opengraph-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h331c9d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/weasyprint-62.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h5cd10c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/anypytools-1.12.2-py311h1ea47a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311h12c1d0e_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.2.1-py311h005e61a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.5-py311hda3d55a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.53.1-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.80.3-h4394cf3_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/h5py-3.11.0-nompi_py311h67016bb_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.3-nompi_h2b43c12_105.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh7428d3b_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.5-py311h005e61a_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsass-0.22.0-py311h12c1d0e_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/livereload-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/make-4.3-h3d2af85_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-2.1.5-py311ha68e1ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.1-py311h8f1b1e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py311h35ffc71_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.2-h3d672ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py311h5592be9_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.3.8-py_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydyf-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments_anyscript-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphen-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.9-h631f459_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-306-py311h12c1d0e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.0-py311hd4686c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-autobuild-2021.3.14-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-book-theme-1.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-simplepdf-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-togglebutton-0.3.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-youtube-1.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxext-opengraph-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/weasyprint-62.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyhd8ed1ab_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda packages: - kind: conda name: _libgcc_mutex @@ -409,6 +801,49 @@ packages: license_family: BSD size: 18365 timestamp: 1704848898483 +- kind: conda + name: anypytools + version: 1.12.2 + build: py311h1ea47a8_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/anypytools-1.12.2-py311h1ea47a8_0.conda + sha256: e650792402b694e25b6ba667f08c45238b9fd990bab4f0a32cf27558ba0f5eb0 + md5: a8f6998cf9cf269d8310d060be27c093 + depends: + - h5py >=2.5 + - pydoe + - pygments_anyscript + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - pywin32 + - scipy >=0.15 + - setuptools + - tqdm + license: MIT + license_family: MIT + size: 3356710 + timestamp: 1719973651042 +- kind: conda + name: anypytools + version: 1.12.2 + build: py311h38be061_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/anypytools-1.12.2-py311h38be061_0.conda + sha256: 45e68efa546400ba3067b36f9490c883bc950852442aceb84809a5a3d467a47a + md5: a6dc9eec6be3a6b028188d5c433286e1 + depends: + - h5py >=2.5 + - pydoe + - pygments_anyscript + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - scipy >=0.15 + - setuptools + - tqdm + license: MIT + license_family: MIT + size: 3082754 + timestamp: 1719973474851 - kind: conda name: asttokens version: 2.4.1 @@ -606,6 +1041,21 @@ packages: license_family: BSD size: 252783 timestamp: 1720974456583 +- kind: conda + name: c-ares + version: 1.33.0 + build: ha66036c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + sha256: 3dec5fdb5d1e1758510af0ca163d82ea10109fec8af7d0cd7af38f01068c365b + md5: b6927f788e85267beef6cbb292aaebdd + depends: + - __glibc >=2.28,<3.0.a0 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 181873 + timestamp: 1723534591118 - kind: conda name: ca-certificates version: 2024.7.4 @@ -628,6 +1078,38 @@ packages: license: ISC size: 154853 timestamp: 1720077432978 +- kind: conda + name: cached-property + version: 1.5.2 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 + md5: 9b347a7ec10940d3f7941ff6c460b551 + depends: + - cached_property >=1.5.2,<1.5.3.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4134 + timestamp: 1615209571450 +- kind: conda + name: cached_property + version: 1.5.2 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 + md5: 576d629e47797577ab0f1b351297ef4a + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 11065 + timestamp: 1615209567874 - kind: conda name: cairo version: 1.18.0 @@ -714,6 +1196,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT + license_family: MIT size: 301038 timestamp: 1723018486310 - kind: conda @@ -732,6 +1215,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: MIT + license_family: MIT size: 296665 timestamp: 1723018946784 - kind: conda @@ -833,6 +1317,42 @@ packages: license_family: BSD size: 13458 timestamp: 1696677888423 +- kind: conda + name: debugpy + version: 1.8.5 + build: py311hda3d55a_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.5-py311hda3d55a_0.conda + sha256: 8bc117279ae16b54d2c20bc4b3a143f7e5e78bec47efc6b1113db90ed0928ebc + md5: 46e12a3c90c3ef378858771901c5fca8 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 3249864 + timestamp: 1722924149906 +- kind: conda + name: debugpy + version: 1.8.5 + build: py311hf86e51f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.5-py311hf86e51f_0.conda + sha256: 92a719cca475ba58ca9d9b6287c5880fc8fd99d8518f22ae6f66c69a6995fe05 + md5: 748a22f229ec0e62963b8045b8e6786c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + size: 2319396 + timestamp: 1722923909539 - kind: conda name: decorator version: 5.1.1 @@ -1144,6 +1664,26 @@ packages: license: LGPL-2.1 size: 64567 timestamp: 1604417122064 +- kind: conda + name: glib + version: 2.80.3 + build: h315aac3_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h315aac3_2.conda + sha256: 20e138ea8d5e59cb62f06b2ddadbfaf155125b64ea2d3a959e119ffc0be245f1 + md5: 00e0da7e4fceb5449f3ddd2bf6b2c351 + depends: + - __glibc >=2.17,<3.0.a0 + - glib-tools 2.80.3 h8fdd7da_2 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libglib 2.80.3 h315aac3_2 + - packaging + - python * + license: LGPL-2.1-or-later + size: 598736 + timestamp: 1723208884591 - kind: conda name: glib version: 2.80.3 @@ -1166,6 +1706,29 @@ packages: license: LGPL-2.1-or-later size: 572358 timestamp: 1720335131283 +- kind: conda + name: glib + version: 2.80.3 + build: h7025463_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/glib-2.80.3-h7025463_2.conda + sha256: bcc56ad2ebbf2aeec0cfd090b647dd9aa03d4ccb8373cb9e20e14fd7b544a868 + md5: 4ebfa8926666cec3e35c5d36cadf1300 + depends: + - glib-tools 2.80.3 h4394cf3_2 + - libffi >=3.4,<4.0a0 + - libglib 2.80.3 h7025463_2 + - libintl >=0.22.5,<1.0a0 + - libintl-devel + - packaging + - python * + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-or-later + size: 572862 + timestamp: 1723209506632 - kind: conda name: glib version: 2.80.3 @@ -1202,6 +1765,24 @@ packages: license: LGPL-2.1-or-later size: 95020 timestamp: 1720335074003 +- kind: conda + name: glib-tools + version: 2.80.3 + build: h4394cf3_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.80.3-h4394cf3_2.conda + sha256: 286e485ad6236820e801aa0dc8d7bd7136c90117a56e253174abcd964d886344 + md5: 74d89cea4821e638dd76a533019f3c35 + depends: + - libglib 2.80.3 h7025463_2 + - libintl >=0.22.5,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-or-later + size: 94871 + timestamp: 1723209457216 - kind: conda name: glib-tools version: 2.80.3 @@ -1217,6 +1798,22 @@ packages: license: LGPL-2.1-or-later size: 113361 timestamp: 1720334924695 +- kind: conda + name: glib-tools + version: 2.80.3 + build: h8fdd7da_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h8fdd7da_2.conda + sha256: 073fd2b01bf7ee4197016a3507fc3dae75628277f2a21f295cdccbd9c1e3e9de + md5: 9958a1f8faba35260e6b68e3a7bc88d6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libglib 2.80.3 h315aac3_2 + license: LGPL-2.1-or-later + size: 114261 + timestamp: 1723208849301 - kind: conda name: graphite2 version: 1.3.13 @@ -1267,6 +1864,48 @@ packages: license_family: MIT size: 46754 timestamp: 1634280590080 +- kind: conda + name: h5py + version: 3.11.0 + build: nompi_py311h439e445_102 + build_number: 102 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda + sha256: 9414f77c76097cab574c535c086caab149e828b4df0a6a972ef5290d98d8f962 + md5: 854d8ab88db383ab8b5fb3e449980c53 + depends: + - cached-property + - hdf5 >=1.14.3,<1.14.4.0a0 + - libgcc-ng >=12 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + size: 1256009 + timestamp: 1717665071453 +- kind: conda + name: h5py + version: 3.11.0 + build: nompi_py311h67016bb_102 + build_number: 102 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/h5py-3.11.0-nompi_py311h67016bb_102.conda + sha256: e331d7c693b11040d803d519533fd325963260beb018a027f745318010134bcc + md5: 6939e0903d4d14bce968077ea98227a3 + depends: + - cached-property + - hdf5 >=1.14.3,<1.14.4.0a0 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 966438 + timestamp: 1717665542410 - kind: conda name: harfbuzz version: 9.0.0 @@ -1311,6 +1950,49 @@ packages: license_family: MIT size: 1603653 timestamp: 1721186240105 +- kind: conda + name: hdf5 + version: 1.14.3 + build: nompi_h2b43c12_105 + build_number: 105 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.3-nompi_h2b43c12_105.conda + sha256: 56c803607a64b5117a8b4bcfdde722e4fa40970ddc4c61224b0981cbb70fb005 + md5: 5788de34381caf624b78c4981618dc0a + depends: + - libaec >=1.1.3,<2.0a0 + - libcurl >=8.8.0,<9.0a0 + - libzlib >=1.2.13,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 2039111 + timestamp: 1717587493910 +- kind: conda + name: hdf5 + version: 1.14.3 + build: nompi_hdf9ad27_105 + build_number: 105 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda + sha256: 2278fa07da6f96e807d402cd55480624d67d2dee202191aaaf278ce5ab23605a + md5: 7e1729554e209627636a0f6fabcdd115 + depends: + - libaec >=1.1.3,<2.0a0 + - libcurl >=8.8.0,<9.0a0 + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=12.3.0 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0a0 + - openssl >=3.3.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3911675 + timestamp: 1717587866574 - kind: conda name: hpack version: 4.0.0 @@ -1436,6 +2118,21 @@ packages: license_family: APACHE size: 28110 timestamp: 1721856614564 +- kind: conda + name: iniconfig + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666 + md5: f800d2da156d08e289b14e87e43c1ae5 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 11101 + timestamp: 1673103208955 - kind: conda name: intel-openmp version: 2024.2.0 @@ -1537,6 +2234,19 @@ packages: license_family: BSD size: 111565 timestamp: 1715127275924 +- kind: conda + name: keyutils + version: 1.6.1 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 - kind: conda name: kiwisolver version: 1.4.5 @@ -1574,6 +2284,42 @@ packages: license_family: BSD size: 73273 timestamp: 1695380140676 +- kind: conda + name: krb5 + version: 1.21.3 + build: h659f571_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- kind: conda + name: krb5 + version: 1.21.3 + build: hdf4eb48_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 + md5: 31aec030344e962fbd7dbbbbd68e60a9 + depends: + - openssl >=3.3.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 712034 + timestamp: 1719463874284 - kind: conda name: lcms2 version: '2.16' @@ -1653,6 +2399,37 @@ packages: license_family: Apache size: 194365 timestamp: 1657977692274 +- kind: conda + name: libaec + version: 1.1.3 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda + sha256: 2ef420a655528bca9d269086cf33b7e90d2f54ad941b437fb1ed5eca87cee017 + md5: 5e97e271911b8b2001a8b71860c32faa + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 35446 + timestamp: 1711021212685 +- kind: conda + name: libaec + version: 1.1.3 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda + sha256: f5c293d3cfc00f71dfdb64bd65ab53625565f8778fc2d5790575bef238976ebf + md5: 8723000f6ffdbdaef16025f0a01b64c5 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 32567 + timestamp: 1711021603471 - kind: conda name: libblas version: 3.9.0 @@ -1832,6 +2609,45 @@ packages: license_family: BSD size: 5191981 timestamp: 1721689628480 +- kind: conda + name: libcurl + version: 8.9.1 + build: h18fefc2_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + sha256: 024be133aed5f100c0b222761e747cc27a2bdf94af51947ad5f70e88cf824988 + md5: 099a1016d23baa4f41148a985351a7a8 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: curl + license_family: MIT + size: 339298 + timestamp: 1722440239161 +- kind: conda + name: libcurl + version: 8.9.1 + build: hdb1bdb2_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + sha256: 0ba60f83709068e9ec1ab543af998cb5a201c8379c871205447684a34b5abfd8 + md5: 7da1d242ca3591e174a3c7d82230d3c0 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc-ng >=12 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 416057 + timestamp: 1722439924963 - kind: conda name: libdeflate version: '1.21' @@ -1863,6 +2679,37 @@ packages: license_family: MIT size: 71163 timestamp: 1722820138782 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 123878 + timestamp: 1597616541093 +- kind: conda + name: libev + version: '4.33' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 - kind: conda name: libexpat version: 2.6.2 @@ -1971,6 +2818,27 @@ packages: license_family: GPL size: 1457561 timestamp: 1719538909168 +- kind: conda + name: libglib + version: 2.80.3 + build: h315aac3_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + sha256: 7470e664b780b91708bed356cc634874dfc3d6f17cbf884a1d6f5d6d59c09f91 + md5: b0143a3e98136a680b728fdf9b42a258 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.80.3 *_2 + license: LGPL-2.1-or-later + size: 3922900 + timestamp: 1723208802469 - kind: conda name: libglib version: 2.80.3 @@ -1994,6 +2862,29 @@ packages: license: LGPL-2.1-or-later size: 3743922 timestamp: 1720334986136 +- kind: conda + name: libglib + version: 2.80.3 + build: h7025463_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + sha256: 1461eb3b10814630acd1f3a11fc47dbb81c46a4f1f32ed389e3ae050a09c4903 + md5: b60894793e7e4a555027bfb4e4ed1d54 + depends: + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - glib 2.80.3 *_2 + license: LGPL-2.1-or-later + size: 3726738 + timestamp: 1723209368854 - kind: conda name: libglib version: 2.80.3 @@ -2091,6 +2982,20 @@ packages: license: LGPL-2.1-or-later size: 95745 timestamp: 1712516102666 +- kind: conda + name: libintl + version: 0.22.5 + build: h5728263_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 + md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 + depends: + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + size: 95568 + timestamp: 1723629479451 - kind: conda name: libintl-devel version: 0.22.5 @@ -2106,6 +3011,21 @@ packages: license: LGPL-2.1-or-later size: 40772 timestamp: 1712516363413 +- kind: conda + name: libintl-devel + version: 0.22.5 + build: h5728263_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_3.conda + sha256: be1f3c48bc750bca7e68955d57180dfd826d6f9fa7eb32994f6cb61b813f9a6a + md5: 7537784e9e35399234d4007f45cdb744 + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h5728263_3 + license: LGPL-2.1-or-later + size: 40746 + timestamp: 1723629745649 - kind: conda name: libjpeg-turbo version: 3.0.0 @@ -2178,6 +3098,27 @@ packages: license_family: BSD size: 5191980 timestamp: 1721689666180 +- kind: conda + name: libnghttp2 + version: 1.58.0 + build: h47da74e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb + md5: 700ac6ea6d53d5510591c4344d5c989a + depends: + - c-ares >=1.23.0,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.0,<4.0a0 + license: MIT + license_family: MIT + size: 631936 + timestamp: 1702130036271 - kind: conda name: libnsl version: 2.0.1 @@ -2309,6 +3250,40 @@ packages: license: Unlicense size: 865346 timestamp: 1718050628718 +- kind: conda + name: libssh2 + version: 1.11.0 + build: h0841786_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d + md5: 1f5a58e686b13bcfde88b93f547d23fe + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 271133 + timestamp: 1685837707056 +- kind: conda + name: libssh2 + version: 1.11.0 + build: h7dfc565_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + sha256: 813fd04eed2a2d5d9c36e53c554f9c1f08e9324e2922bd60c9c52dbbed2dbcec + md5: dc262d03aae04fe26825062879141a41 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 266806 + timestamp: 1685838242099 - kind: conda name: libstdcxx-ng version: 14.1.0 @@ -3133,6 +4108,43 @@ packages: license_family: BSD size: 816867 timestamp: 1718466930248 +- kind: conda + name: pcre2 + version: '10.44' + build: h3d7b363_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 + md5: a3a3baddcfb8c80db84bec3cb7746fb8 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 820831 + timestamp: 1723489427046 +- kind: conda + name: pcre2 + version: '10.44' + build: hba22ea6_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 - kind: conda name: pexpect version: 4.9.0 @@ -3245,6 +4257,21 @@ packages: license_family: MIT size: 461854 timestamp: 1709239971654 +- kind: conda + name: pluggy + version: 1.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 + md5: d3483c8fc2dc2cc3f5cf43e26d60cabf + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 23815 + timestamp: 1713667175451 - kind: conda name: prompt-toolkit version: 3.0.47 @@ -3374,6 +4401,23 @@ packages: license_family: BSD size: 1393462 timestamp: 1719344980505 +- kind: conda + name: pydoe + version: 0.3.8 + build: py_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.3.8-py_1.tar.bz2 + sha256: 4616364442c3c0c91188ae8b04d3146f21e8826e55e120835d910844e4dbe38e + md5: 6aeffd34a05a050c9b01c86de859c459 + depends: + - numpy >=1.8 + - python + - scipy >=0.13 + license: BSD 3-Clause + size: 13421 + timestamp: 1531166118644 - kind: conda name: pydyf version: 0.11.0 @@ -3484,6 +4528,29 @@ packages: license_family: BSD size: 18981 timestamp: 1661604969727 +- kind: conda + name: pytest + version: 8.3.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + sha256: 72c84a3cd9fe82835a88e975fd2a0dbf2071d1c423ea4f79e7930578c1014873 + md5: e010a224b90f1f623a917c35addbb924 + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.8 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 257671 + timestamp: 1721923749407 - kind: conda name: python version: 3.11.9 @@ -3601,6 +4668,25 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 +- kind: conda + name: pywin32 + version: '306' + build: py311h12c1d0e_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pywin32-306-py311h12c1d0e_2.conda + sha256: 79d942817bdaf384602113e5fcb9158dc45cae4044bed308918a5db97f141fdb + md5: 25df0fc55722ea1a94494f41302e2d1c + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: PSF-2.0 + license_family: PSF + size: 6124285 + timestamp: 1695974706892 - kind: conda name: pyyaml version: 6.0.2 @@ -3707,6 +4793,55 @@ packages: license_family: APACHE size: 58810 timestamp: 1717057174842 +- kind: conda + name: scipy + version: 1.14.0 + build: py311h517d4fd_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda + sha256: 55bb5502a4795b5b271bd3879846665ad9ac7ffeeea418ba6334accd8d5c71f4 + md5: 481fd009b2d863f526f60ca19cb7880b + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=12.3.0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - numpy <2.3 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + size: 17709552 + timestamp: 1720323995099 +- kind: conda + name: scipy + version: 1.14.0 + build: py311hd4686c6_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.0-py311hd4686c6_1.conda + sha256: 60f67658fe153e37da2bda1847eb8b5142d4ff721308f5bf80e4548fa2425b0f + md5: 46e7cf04c2a67603ff58a2d9b8ca128a + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - numpy <2.3 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 16062838 + timestamp: 1720324583 - kind: conda name: setuptools version: 72.1.0 @@ -4167,6 +5302,21 @@ packages: license_family: Apache size: 860084 timestamp: 1717723311673 +- kind: conda + name: tqdm + version: 4.66.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda + sha256: f2384902cef72048b0e9bad5c03d7a843de02ba6bc8618a9ecab6ff81a131312 + md5: c6e94fc2b2ec71ea33fe7c7da259acb4 + depends: + - colorama + - python >=3.7 + license: MPL-2.0 or MIT + size: 89519 + timestamp: 1722737568509 - kind: conda name: traitlets version: 5.14.3 @@ -4651,6 +5801,21 @@ packages: license_family: MIT size: 20917 timestamp: 1718013395428 +- kind: conda + name: zipp + version: 3.20.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.0-pyhd8ed1ab_0.conda + sha256: 72fa72af24006e37a9f027d6d9f407369edcbd9bbb93db299820eb63ea07e404 + md5: 05b6bcb391b5be17374f7ad0aeedc479 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 20857 + timestamp: 1723591347715 - kind: conda name: zlib version: 1.3.1 diff --git a/pixi.toml b/pixi.toml index 2cf19aba..24604308 100644 --- a/pixi.toml +++ b/pixi.toml @@ -35,3 +35,16 @@ myst-parser = ">=4.0.0,<5" jinja2 = ">=3.1.4,<3.2" tomli = ">=2.0.1,<2.1" sphinx-book-theme = ">=1.1.3,<2" +pytest = ">=8.3.2,<9" + + +[feature.test.dependencies] +pytest = "*" +anypytools = "*" +debugpy = "*" + +[feature.test.tasks] +test = "pytest" + +[environments] +test = ["test"] From 06ca4843ff3faeb385a090f65139c3fcc7228e9b Mon Sep 17 00:00:00 2001 From: Jacob Hilmar Adamsen Date: Thu, 15 Aug 2024 13:56:31 +0200 Subject: [PATCH 02/10] Lesson 2 updates --- .../Downloads/demo.lesson2.any | 12 +- .../Snippets/lesson2/snip.NewModel.main-1.any | 25 +++ .../Snippets/lesson2/snip.NewModel.main-2.any | 41 ++++ .../Snippets/lesson2/snip.NewModel.main-3.any | 32 ++++ .../Snippets/lesson2/snip.NewModel.main-4.any | 33 ++++ .../Snippets/lesson2/snip.NewModel.main-5.any | 57 ++++++ .../Snippets/lesson2/snip.NewModel.main-6.any | 82 ++++++++ .../Snippets/lesson2/snip.NewModel.main-7.any | 85 +++++++++ .../Snippets/lesson2/snip.NewModel.main-8.any | 83 +++++++++ .../Snippets/lesson2/snip.NewModel.main-9.any | 83 +++++++++ A_Getting_started_anyscript/lesson2.md | 176 +++++------------- 11 files changed, 572 insertions(+), 137 deletions(-) create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-1.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-3.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any diff --git a/A_Getting_started_anyscript/Downloads/demo.lesson2.any b/A_Getting_started_anyscript/Downloads/demo.lesson2.any index 3d572d15..c06ae363 100644 --- a/A_Getting_started_anyscript/Downloads/demo.lesson2.any +++ b/A_Getting_started_anyscript/Downloads/demo.lesson2.any @@ -1,7 +1,6 @@ // Todo: Write a small description of your model here Main = { - // The actual body model goes in this folder AnyFolder ArmModel = { @@ -10,17 +9,16 @@ Main = { // Todo: Add points for grounding of the model here - }; // Global reference frame - - // Todo. Add the model elements such as + }; + + // Todo: Add the model elements such as // segments, joints, and muscles here. - }; // ArmModel - + }; // The study: Operations to be performed on the model AnyBodyStudy ArmStudy = { AnyFolder &Model = .ArmModel; Gravity = {0.0, -9.81, 0.0}; }; -}; // Main \ No newline at end of file +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-1.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-1.any new file mode 100644 index 00000000..28e89c43 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-1.any @@ -0,0 +1,25 @@ + // Todo: Write a small description of your model here + +Main = { +//# BEGIN SNIPPET 1 +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + §// Segments + AnyFolder Segs = { + }; // Segs folder § + +}; + //# END SNIPPET 1 + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any new file mode 100644 index 00000000..b187de7b --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any @@ -0,0 +1,41 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + //# BEGIN SNIPPET 1 + // Segments + AnyFolder Segs = { + §AnySeg = { + //viewRefFrame.Visible = Off; + //viewNodes.Visible = Off; + //r0 = {0.0, 0.0, 0.0}; + //rDot0 = {0.0, 0.0, 0.0}; + //Axes0 = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; + //omega0 = {0.0, 0.0, 0.0}; + Mass = 0.0; + Jii = {0.0, 0.0, 0.0}; + //Jij = {0.0, 0.0, 0.0}; + //sCoM = {0.0, 0.0, 0.0}; + //JaboutCoMOnOff = Off; + //viewInertia.Visible = Off; + //AnyInertia & = ; + //AnyInertia & = ; You can make any number of AnyInertia objects! + };§ + }; // Segs folder + //# END SNIPPET 1 + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-3.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-3.any new file mode 100644 index 00000000..d8ed2799 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-3.any @@ -0,0 +1,32 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + + // Segments + AnyFolder Segs = { + //# BEGIN SNIPPET 1 +AnySeg §UpperArm§ = { + //r0 = {0.0, 0.0, 0.0}; + //Axes0 = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; + Mass = §2§; + Jii = {§0.001, 0.01, 0.01§}; +}; §//UpperArm§ + //# END SNIPPET 1 + }; // Segs folder + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any new file mode 100644 index 00000000..804c69f4 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any @@ -0,0 +1,33 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + + // Segments + AnyFolder Segs = { + //# BEGIN SNIPPET 1 +AnySeg UpperArm = { + //r0 = {0.0, 0.0, 0.0}; + //Axes0 = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + §AnyDrawSeg drw = {};§ +}; //UpperArm + //# END SNIPPET 1 + }; // Segs folder + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any new file mode 100644 index 00000000..45dff7f7 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any @@ -0,0 +1,57 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + + // Segments + AnyFolder Segs = { + //# BEGIN SNIPPET 1 +AnySeg UpperArm = { + //r0 = {0.0, 0.0, 0.0}; + //Axes0 = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + §AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + };§ +}; //UpperArm + //# END SNIPPET 1 + }; // Segs folder + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any new file mode 100644 index 00000000..368120e4 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any @@ -0,0 +1,82 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + + // Segments + AnyFolder Segs = { + AnySeg UpperArm = { + //r0 = {0.0, 0.0, 0.0}; + //Axes0 = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + §AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + };§ + }; //UpperArm + + //# BEGIN SNIPPET 1 + §AnySeg ForeArm = { + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm§ + +}; // Segs folder + //# END SNIPPET 1 + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any new file mode 100644 index 00000000..5f10a0da --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any @@ -0,0 +1,85 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + + // Segments + AnyFolder Segs = { + //# BEGIN SNIPPET 1 +AnySeg UpperArm = { + §r0 = {0.0, 0.3, 0.0};§ + //Axes0 = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + //# END SNIPPET 1 + §AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + };§ + }; //UpperArm + + //# BEGIN SNIPPET 2 +AnySeg ForeArm = { + §r0 = {0.3, 0.0, 0.0};§ + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + //# END SNIPPET 2 + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + }; // Segs folder + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any new file mode 100644 index 00000000..309b0bc3 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any @@ -0,0 +1,83 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + + // Segments + AnyFolder Segs = { + //# BEGIN SNIPPET 1 +AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + §Axes0 = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}};§ + //# END SNIPPET 1 + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + §AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + };§ + }; //UpperArm + + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + }; // Segs folder + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any new file mode 100644 index 00000000..a7f0696e --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any @@ -0,0 +1,83 @@ + // Todo: Write a small description of your model here + +Main = { +// The actual body model goes in this folder +AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; + + + // Segments + AnyFolder Segs = { + //# BEGIN SNIPPET 1 +AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + §Axes0 = RotMat(-90*pi/180, z);§ + //# END SNIPPET 1 + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + §AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + };§ + }; //UpperArm + + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + }; // Segs folder + +}; + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/lesson2.md b/A_Getting_started_anyscript/lesson2.md index a4c2b8c3..a6a0bafc 100644 --- a/A_Getting_started_anyscript/lesson2.md +++ b/A_Getting_started_anyscript/lesson2.md @@ -31,23 +31,11 @@ the segments are treated as rigid elements which represent human bones as well a We shall start by defining a folder for the segments. Please add the following text to your model (new text marked in red): -```AnyScriptDoc -// The actual body model goes in this folder -AnyFolder ArmModel = { -  // Global Reference Frame -  AnyFixedRefFrame GlobalRef = { - -  // Todo: Add points for grounding -  // of the model here - - }; // Global reference frame - -  §// Segments -  AnyFolder Segs = { -  }; // Segs folder§ - -}; // ArmModel +```{literalinclude} Snippets/lesson2/snip.NewModel.main-1.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` Load the model by clicking the {{ Load_button_image }} icon or the @@ -69,21 +57,10 @@ double-click it to insert its template into your text editor.** You should get this: -```AnyScriptDoc -// Segments -AnyFolder Segs = { -  §AnySeg = -  { -    //r0 = {0, 0, 0}; -    //rDot0 = {0, 0, 0}; -    //Axes0 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; -    //omega0 = {0, 0, 0}; -    Mass = 0; -    Jii = {0, 0, 0}; -    //Jij = {0, 0, 0}; -    //sCoM = {0, 0, 0}; -  };§ -}; // Segs folder +```{literalinclude} Snippets/lesson2/snip.NewModel.main-2.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` Every object in AnyBody defined by some properties that are both mandatory (the @@ -97,13 +74,10 @@ You can however change this by editing the properties `sCoM` and `Jij`. Go to "H Let us rename the segment as "UpperArm" and set its {literal}`Mass = 2` and {literal}`Jii = {0.001, 0.01, 0.01}`: -```AnyScriptDoc -AnySeg §UpperArm§ = { -  //r0 = {0, 0, 0}; -  //Axes0 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; -  Mass = §2§; -  Jii = {§0.001, 0.01, 0.01§}; -}; §//UpperArm§ +```{literalinclude} Snippets/lesson2/snip.NewModel.main-3.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` Load the model again and notice the warnings you get. Amongst other messages: @@ -118,19 +92,15 @@ It therefore cannot evaluate the model's kinematics.** We will take care of this To make something visible in AnyBody, you have to add a drawing object which defines visibility: -```AnyScriptDoc -AnySeg UpperArm = { -  //r0 = {0, 0, 0}; -  //Axes0 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; -  Mass = 2; -  Jii = {0.001, 0.01, 0.01}; -  §AnyDrawSeg drw = {};§ -}; // UpperArm +```{literalinclude} Snippets/lesson2/snip.NewModel.main-4.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` Reload the model, and look at the Model View (you might have to press -the {{ Zoom_button_image }} button to locate your segment) . The segment is displayed as an ellipsoid whose dimensions capture the -mass distribution represented by Jii. Changing any one component of Jii will alter the shape of the ellipse. +the {{ Zoom_button_image }} button to locate your segment). The segment is displayed as an ellipsoid whose dimensions capture the +mass distribution represented by `Jii`. Changing any one component of `Jii` will alter the shape of the ellipse. ## Adding point nodes to a segment @@ -142,38 +112,10 @@ nodes defined in most AMMR models.** For this model, copy and paste the following lines into your file: -```AnyScriptDoc -AnySeg UpperArm = { -  //r0 = {0, 0, 0}; -  //Axes0 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; -  Mass = 2; -  Jii = {0.001, 0.01, 0.01}; -  AnyDrawSeg drw = {}; -  §AnyRefNode ShoulderNode = { -    sRel = {-0.2,0,0}; -  }; -  AnyRefNode ElbowNode = { -    sRel = {0.2,0,0}; -  }; -  AnyRefNode DeltodeusA = { -    sRel = {-0.1,0,0.02}; -  }; -  AnyRefNode DeltodeusB = { -    sRel = {-0.1,0,-0.02}; -  }; -  AnyRefNode Brachialis = { -    sRel = {0.1,0,0.01}; -  }; -  AnyRefNode BicepsShort = { -    sRel = {-0.1,0,0.03}; -  }; -  AnyRefNode Brachioradialis = { -    sRel = {0.05,0,0.02}; -  }; -  AnyRefNode TricepsShort = { -    sRel = {-0.1,0,-0.01}; -  };§ -}; // UpperArm +```{literalinclude} Snippets/lesson2/snip.NewModel.main-5.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` ```{image} _static/lesson2/image4.png @@ -186,32 +128,10 @@ yellow pins. You will now add a forearm segment to the mechanism by copy-pasting these lines into the "Segs" folder: -```AnyScriptDoc -    §AnySeg ForeArm = { -      Mass = 2.0; -      Jii = {0.001,0.01,0.01}; -      AnyRefNode ElbowNode = { -        sRel = {-0.2,0,0}; -      }; -      AnyRefNode HandNode = { -        sRel = {0.2,0,0}; -      }; -      AnyRefNode Brachialis = { -        sRel = {-0.1,0,0.02}; -      }; -      AnyRefNode Brachioradialis = { -        sRel = {0.0,0,0.02}; -      }; -      AnyRefNode Biceps = { -        sRel = {-0.15,0,0.01}; -      }; -      AnyRefNode Triceps = { -        sRel = {-0.25,0,-0.05}; -      }; -      AnyDrawSeg DrwSeg = {}; -   }; // ForeArm§ - -}; // Segs folder +```{literalinclude} Snippets/lesson2/snip.NewModel.main-6.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` **When you reload the model, you may not see the forearm immediately @@ -223,24 +143,20 @@ r0 (translation w.r.t global frame at load-time) and Axes0 (rotation matrix w.r. **Remember that your simulation, will only use these load-time positions as an initial guess, on the way to enforcing specified motions and constraints (such as joints between segments). More on this in the next lesson.** -For now, let us first change r0 - the global position of the segment at load-time. +For now, let us first change `r0` - the global position of the segment at load-time. -```AnyScriptDoc -AnySeg UpperArm = { -  §r0 = {0, 0.3, 0};§ -  //Axes0 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; -  Mass = 2; -  Jii = {0.001, 0.01, 0.01}; -  AnyDrawSeg drw = {}; +```{literalinclude} Snippets/lesson2/snip.NewModel.main-7.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` and -```AnyScriptDoc -AnySeg ForeArm = { -  §r0 = {0.3, 0, 0};§ -  Mass = 2.0; -  Jii = {0.001,0.01,0.01}; +```{literalinclude} Snippets/lesson2/snip.NewModel.main-7.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 2 +:end-before: //# END SNIPPET 2 ``` This will clearly separate the segments in your Model View: @@ -251,18 +167,18 @@ This will clearly separate the segments in your Model View: ## Rotation matrices in AnyBody To improve the visual impression of the arm segments at load time, we will set -the Axes0 property, which is really a rotation matrix. +the `Axes0` property, which is really a rotation matrix. -You UpperArm segment currently looks like this: +Your UpperArm segment currently looks like this: -```AnyScriptDoc -AnySeg UpperArm = { -  r0 = {0, 0.3, 0}; -  §Axes0 = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};§ +```{literalinclude} Snippets/lesson2/snip.NewModel.main-8.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` :::{note} -Note that matrices in AnyBody are arranged row-wise, so {1, 0, 0} in Axes0 is the +Note that matrices in AnyBody are arranged row-wise, so {1, 0, 0} in `Axes0` is the first row of a 3x3 matrix. ::: @@ -272,10 +188,10 @@ the exact expressions for all 9 components of the 3x3 Axes0 matrix. **An easier solution is to use a standard function named "RotMat", which returns a rotation matrix corresponding to a given axis and rotation angle. Therefore, we can specify:** -```AnyScriptDoc -AnySeg UpperArm = { -  r0 = {0, 0.3, 0}; -  §Axes0 = RotMat(-90*pi/180, z);§ +```{literalinclude} Snippets/lesson2/snip.NewModel.main-9.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` When you reload again, you will see that the UpperArm rotated From 040cf5892a07a1efae49482b8741ab4a9fb17f4c Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Wed, 21 Aug 2024 10:20:21 +0200 Subject: [PATCH 03/10] Only test snippets --- conftest.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conftest.py b/conftest.py index 9cb91d94..64f7839f 100644 --- a/conftest.py +++ b/conftest.py @@ -14,7 +14,7 @@ def pytest_collect_file(file_path, parent): if file_path.suffix == ".any": if "Snippet" in file_path.parts[-3]: return AnyTestFile.from_parent(parent, path=file_path) - if "Downloads" in file_path.parts[-2]: - content = file_path.read_text() - if MAIN_REGEX.search(content): - return AnyTestFile.from_parent(parent, path=file_path) \ No newline at end of file + # if "Downloads" in file_path.parts[-2]: + # content = file_path.read_text() + # if MAIN_REGEX.search(content): + # return AnyTestFile.from_parent(parent, path=file_path) \ No newline at end of file From 9ba978d80e9191d7d677dabec1c57e0f4db3d8b9 Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Wed, 21 Aug 2024 10:32:16 +0200 Subject: [PATCH 04/10] Alias pytest task to pytest in the test environment --- pixi.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pixi.toml b/pixi.toml index 24604308..de865133 100644 --- a/pixi.toml +++ b/pixi.toml @@ -44,7 +44,7 @@ anypytools = "*" debugpy = "*" [feature.test.tasks] -test = "pytest" +pytest = "pytest" [environments] test = ["test"] From afba057dec59827df7718cc1465fabdd7ceba00a Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Wed, 21 Aug 2024 12:59:19 +0200 Subject: [PATCH 05/10] Setup automatic testing on GitHub --- .github/workflows/build.yaml | 20 +- pixi.lock | 873 ++++++++++++----------------------- pixi.toml | 11 +- 3 files changed, 309 insertions(+), 595 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a25b1d31..aa4e5833 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -56,12 +56,30 @@ jobs: - run: pixi run sphinx-build -M linkcheck . _build -W --keep-going -a -q continue-on-error: true + test-latest: + runs-on: ubuntu-latest + needs: [find-tag] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: prefix-dev/setup-pixi@v0.8.1 + with: + cache: true + cache-write: ${{ github.event_name == 'push' && github.ref_name == 'master' }} + environments: test + activate-environment: true + + - name: Test Snippets + run: pytest + build-latest: runs-on: ubuntu-latest - needs: [find-tag, link-check] + needs: [find-tag, link-check, test-latest] steps: - uses: actions/checkout@v4 diff --git a/pixi.lock b/pixi.lock index 0ba4e00f..e656bb42 100644 --- a/pixi.lock +++ b/pixi.lock @@ -3,6 +3,7 @@ environments: default: channels: - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.anaconda.org/anybody/ packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -40,8 +41,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.1-py311h61187de_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h8a4344b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h73ef956_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h8fdd7da_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda @@ -51,7 +52,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda @@ -71,7 +72,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -93,20 +94,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py311h459d7ec_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py311h74b4f7c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.2-py311h74b4f7c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py311hed25524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.0-py311hed25524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py311h82a398c_0.conda @@ -127,13 +128,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h61187de_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -178,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h5cd10c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda @@ -216,8 +217,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.53.1-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.80.3-h7025463_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.80.3-h4394cf3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.80.3-h4394cf3_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda @@ -227,9 +228,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh7428d3b_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -244,11 +245,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda @@ -269,7 +270,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/make-4.3-h3d2af85_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-2.1.5-py311ha68e1ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.1-py311h8f1b1e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.2-py311h8f1b1e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda @@ -277,13 +278,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py311h35ffc71_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.0-py311h35ffc71_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.2-h3d672ee_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py311h5592be9_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda @@ -303,12 +304,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.9-h631f459_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -350,20 +351,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda test: channels: - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.anaconda.org/anybody/ packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/anypytools-1.12.2-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda @@ -371,10 +372,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py311ha8e6434_0.conda @@ -383,7 +381,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py311h9547e67_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.5-py311hf86e51f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda @@ -403,36 +400,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h8fdd7da_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda @@ -443,13 +432,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsass-0.22.0-py311hb755f60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda @@ -462,14 +449,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py311h459d7ec_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py311h74b4f7c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.2-py311h74b4f7c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py311hed25524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.0-py311hed25524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -487,7 +474,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.3.8-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pydyf-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments_anyscript-1.4.0-pyhd8ed1ab_0.conda @@ -497,14 +483,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h61187de_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -528,7 +513,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h331c9d8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda @@ -557,6 +541,7 @@ environments: win-64: - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/anybody/win-64/anybodycon-8.1.0beta1.docmarker-h9490d1a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/anypytools-1.12.2-py311h1ea47a8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda @@ -605,9 +590,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh7428d3b_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -616,22 +600,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libflang-5.0.0-h6538335_20180525.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libopenblas-0.3.27-pthreads_hf0a32cb_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsass-0.22.0-py311h12c1d0e_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda @@ -639,10 +624,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/livereload-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/llvm-meta-5.0.0-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 @@ -651,19 +636,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/make-4.3-h3d2af85_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-2.1.5-py311ha68e1ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.1-py311h8f1b1e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.2-py311h8f1b1e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py311h35ffc71_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.0-py311h35ffc71_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.2-h3d672ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openmp-5.0.0-vc14_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 @@ -672,7 +658,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda @@ -686,14 +671,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.9-h631f459_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-306-py311h12c1d0e_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.0-py311hd4686c6_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.0-py311hd4686c6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -713,7 +698,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-youtube-1.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxext-opengraph-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 @@ -801,6 +785,22 @@ packages: license_family: BSD size: 18365 timestamp: 1704848898483 +- kind: conda + name: anybodycon + version: 8.1.0beta1.docmarker + build: h9490d1a_0 + subdir: win-64 + url: https://conda.anaconda.org/anybody/win-64/anybodycon-8.1.0beta1.docmarker-h9490d1a_0.conda + sha256: 3679488a330b11199b8815bb6cb9f60e1b49bb555ef3a0f173b17bee6ff1f57f + md5: 351dcf291a59a5ff70fa38e99f508ff6 + depends: + - vc14_runtime + - python >=3.11,<3.13 + - nomkl + arch: x86_64 + platform: win + size: 166489850 + timestamp: 1724235785571 - kind: conda name: anypytools version: 1.12.2 @@ -823,27 +823,6 @@ packages: license_family: MIT size: 3356710 timestamp: 1719973651042 -- kind: conda - name: anypytools - version: 1.12.2 - build: py311h38be061_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/anypytools-1.12.2-py311h38be061_0.conda - sha256: 45e68efa546400ba3067b36f9490c883bc950852442aceb84809a5a3d467a47a - md5: a6dc9eec6be3a6b028188d5c433286e1 - depends: - - h5py >=2.5 - - pydoe - - pygments_anyscript - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - scipy >=0.15 - - setuptools - - tqdm - license: MIT - license_family: MIT - size: 3082754 - timestamp: 1719973474851 - kind: conda name: asttokens version: 2.4.1 @@ -1041,21 +1020,6 @@ packages: license_family: BSD size: 252783 timestamp: 1720974456583 -- kind: conda - name: c-ares - version: 1.33.0 - build: ha66036c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda - sha256: 3dec5fdb5d1e1758510af0ca163d82ea10109fec8af7d0cd7af38f01068c365b - md5: b6927f788e85267beef6cbb292aaebdd - depends: - - __glibc >=2.28,<3.0.a0 - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 181873 - timestamp: 1723534591118 - kind: conda name: ca-certificates version: 2024.7.4 @@ -1335,24 +1299,6 @@ packages: license_family: MIT size: 3249864 timestamp: 1722924149906 -- kind: conda - name: debugpy - version: 1.8.5 - build: py311hf86e51f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.5-py311hf86e51f_0.conda - sha256: 92a719cca475ba58ca9d9b6287c5880fc8fd99d8518f22ae6f66c69a6995fe05 - md5: 748a22f229ec0e62963b8045b8e6786c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - size: 2319396 - timestamp: 1722923909539 - kind: conda name: decorator version: 5.1.1 @@ -1684,28 +1630,6 @@ packages: license: LGPL-2.1-or-later size: 598736 timestamp: 1723208884591 -- kind: conda - name: glib - version: 2.80.3 - build: h7025463_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/glib-2.80.3-h7025463_1.conda - sha256: 892d784d7a8c7444004109734dcf71d11ded0d1dc06d3dfc14227576993239a5 - md5: 13ce8fd2eb07f41c7108f7ad7bb0062e - depends: - - glib-tools 2.80.3 h4394cf3_1 - - libffi >=3.4,<4.0a0 - - libglib 2.80.3 h7025463_1 - - libintl >=0.22.5,<1.0a0 - - libintl-devel - - python * - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-2.1-or-later - size: 572358 - timestamp: 1720335131283 - kind: conda name: glib version: 2.80.3 @@ -1729,42 +1653,6 @@ packages: license: LGPL-2.1-or-later size: 572862 timestamp: 1723209506632 -- kind: conda - name: glib - version: 2.80.3 - build: h8a4344b_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h8a4344b_1.conda - sha256: 51db16c42f0f07aa9d4f922a629d8f68fe3b2590917b8282b7e8ab5ced45c0f6 - md5: a3acc4920c9ca19cb6b295028d606477 - depends: - - glib-tools 2.80.3 h73ef956_1 - - libffi >=3.4,<4.0a0 - - libgcc-ng >=12 - - libglib 2.80.3 h8a4344b_1 - - python * - license: LGPL-2.1-or-later - size: 599204 - timestamp: 1720334967965 -- kind: conda - name: glib-tools - version: 2.80.3 - build: h4394cf3_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.80.3-h4394cf3_1.conda - sha256: 0bc71e397b49c622a224b4ecdef338ec215d037d0e385a5870afd5a96197399d - md5: 12d270a5f8b8ae0a9536c1960f21e0aa - depends: - - libglib 2.80.3 h7025463_1 - - libintl >=0.22.5,<1.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-2.1-or-later - size: 95020 - timestamp: 1720335074003 - kind: conda name: glib-tools version: 2.80.3 @@ -1783,21 +1671,6 @@ packages: license: LGPL-2.1-or-later size: 94871 timestamp: 1723209457216 -- kind: conda - name: glib-tools - version: 2.80.3 - build: h73ef956_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h73ef956_1.conda - sha256: 1cbaa71af8ed506c158e345e3f951b4f36506f96e957b9486dea5eaca86252b2 - md5: 99701cdc9a25a333d15265d1d243b2dc - depends: - - libgcc-ng >=12 - - libglib 2.80.3 h8a4344b_1 - license: LGPL-2.1-or-later - size: 113361 - timestamp: 1720334924695 - kind: conda name: glib-tools version: 2.80.3 @@ -1864,26 +1737,6 @@ packages: license_family: MIT size: 46754 timestamp: 1634280590080 -- kind: conda - name: h5py - version: 3.11.0 - build: nompi_py311h439e445_102 - build_number: 102 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda - sha256: 9414f77c76097cab574c535c086caab149e828b4df0a6a972ef5290d98d8f962 - md5: 854d8ab88db383ab8b5fb3e449980c53 - depends: - - cached-property - - hdf5 >=1.14.3,<1.14.4.0a0 - - libgcc-ng >=12 - - numpy >=1.19,<3 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: BSD-3-Clause - license_family: BSD - size: 1256009 - timestamp: 1717665071453 - kind: conda name: h5py version: 3.11.0 @@ -1971,28 +1824,6 @@ packages: license_family: BSD size: 2039111 timestamp: 1717587493910 -- kind: conda - name: hdf5 - version: 1.14.3 - build: nompi_hdf9ad27_105 - build_number: 105 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda - sha256: 2278fa07da6f96e807d402cd55480624d67d2dee202191aaaf278ce5ab23605a - md5: 7e1729554e209627636a0f6fabcdd115 - depends: - - libaec >=1.1.3,<2.0a0 - - libcurl >=8.8.0,<9.0a0 - - libgcc-ng >=12 - - libgfortran-ng - - libgfortran5 >=12.3.0 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0a0 - - openssl >=3.3.1,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 3911675 - timestamp: 1717587866574 - kind: conda name: hpack version: 4.0.0 @@ -2104,20 +1935,20 @@ packages: timestamp: 1656939625410 - kind: conda name: importlib-metadata - version: 8.2.0 + version: 8.4.0 build: pyha770c72_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda - sha256: 15dd2beba1c6f780fec6c5351bbce815d27a29561f422fe830133c995ef90b8a - md5: c261d14fc7f49cdd403868998a18c318 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda + sha256: 02c95f6f62675012e0b2ab945eba6fc14fa6a693c17bced3554db7b62d586f0c + md5: 6e3dbc422d3749ad72659243d6ac8b2b depends: - python >=3.8 - zipp >=0.5 license: Apache-2.0 license_family: APACHE - size: 28110 - timestamp: 1721856614564 + size: 28338 + timestamp: 1724187329246 - kind: conda name: iniconfig version: 2.0.0 @@ -2135,17 +1966,17 @@ packages: timestamp: 1673103208955 - kind: conda name: intel-openmp - version: 2024.2.0 - build: h57928b3_980 - build_number: 980 + version: 2024.2.1 + build: h57928b3_1083 + build_number: 1083 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda - sha256: e3ddfb67e0a922868e68f83d0b56755ff1c280ffa959a0c5ee6a922aaf7022b0 - md5: 9c28c39e64871a0adef7d1195bd58655 + url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 + md5: 2d89243bfb53652c182a7c73182cce4f license: LicenseRef-IntelSimplifiedSoftwareOct2022 license_family: Proprietary - size: 1860328 - timestamp: 1721088141110 + size: 1852356 + timestamp: 1723739573141 - kind: conda name: ipython version: 8.18.1 @@ -2234,19 +2065,6 @@ packages: license_family: BSD size: 111565 timestamp: 1715127275924 -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 - kind: conda name: kiwisolver version: 1.4.5 @@ -2284,25 +2102,6 @@ packages: license_family: BSD size: 73273 timestamp: 1695380140676 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 - kind: conda name: krb5 version: 1.21.3 @@ -2399,21 +2198,6 @@ packages: license_family: Apache size: 194365 timestamp: 1657977692274 -- kind: conda - name: libaec - version: 1.1.3 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda - sha256: 2ef420a655528bca9d269086cf33b7e90d2f54ad941b437fb1ed5eca87cee017 - md5: 5e97e271911b8b2001a8b71860c32faa - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 35446 - timestamp: 1711021212685 - kind: conda name: libaec version: 1.1.3 @@ -2471,6 +2255,28 @@ packages: license_family: BSD size: 5192100 timestamp: 1721689573083 +- kind: conda + name: libblas + version: 3.9.0 + build: 23_win64_openblas + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_openblas.conda + sha256: f06339ecdce886021e13c71dd69ae3981c3d120b14abeb6ddc4b5658fb4b188f + md5: 726ff0d87228ca49113f70032db8ea74 + depends: + - libopenblas 0.3.27 pthreads_hf0a32cb_1 + constrains: + - libcblas 3.9.0 23_win64_openblas + - blas * openblas + - liblapacke 3.9.0 23_win64_openblas + - liblapack 3.9.0 23_win64_openblas + track_features: + - blas_openblas + license: BSD-3-Clause + license_family: BSD + size: 3976094 + timestamp: 1721689728129 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -2609,6 +2415,27 @@ packages: license_family: BSD size: 5191981 timestamp: 1721689628480 +- kind: conda + name: libcblas + version: 3.9.0 + build: 23_win64_openblas + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_openblas.conda + sha256: 3281f4ccb05db11ab29305fee5d5d4dafc354c0a364721e41a03f21dac3b5ffc + md5: 06543fc90ce9572b8cf8d714e0d23b0e + depends: + - libblas 3.9.0 23_win64_openblas + constrains: + - liblapack 3.9.0 23_win64_openblas + - liblapacke 3.9.0 23_win64_openblas + - blas * openblas + track_features: + - blas_openblas + license: BSD-3-Clause + license_family: BSD + size: 3976316 + timestamp: 1721689785919 - kind: conda name: libcurl version: 8.9.1 @@ -2628,26 +2455,6 @@ packages: license_family: MIT size: 339298 timestamp: 1722440239161 -- kind: conda - name: libcurl - version: 8.9.1 - build: hdb1bdb2_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda - sha256: 0ba60f83709068e9ec1ab543af998cb5a201c8379c871205447684a34b5abfd8 - md5: 7da1d242ca3591e174a3c7d82230d3c0 - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc-ng >=12 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.1,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: curl - license_family: MIT - size: 416057 - timestamp: 1722439924963 - kind: conda name: libdeflate version: '1.21' @@ -2679,37 +2486,6 @@ packages: license_family: MIT size: 71163 timestamp: 1722820138782 -- kind: conda - name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 - depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 - license: BSD-2-Clause - license_family: BSD - size: 123878 - timestamp: 1597616541093 -- kind: conda - name: libev - version: '4.33' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 - kind: conda name: libexpat version: 2.6.2 @@ -2771,6 +2547,25 @@ packages: license_family: MIT size: 42063 timestamp: 1636489106777 +- kind: conda + name: libflang + version: 5.0.0 + build: h6538335_20180525 + build_number: 20180525 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libflang-5.0.0-h6538335_20180525.tar.bz2 + sha256: 0b893b511190332320f4a3e3d6424fbd350271ffbca34eb25b5cd8bc451f1a05 + md5: 9f473a344e18668e99a93f7e21a54b69 + depends: + - openmp 5.0.0 + - vc >=14,<15.0a0 + arch: x86_64 + platform: win + track_features: + - flang + license: Apache 2.0 + size: 531143 + timestamp: 1527899216421 - kind: conda name: libgcc-ng version: 14.1.0 @@ -2839,29 +2634,6 @@ packages: license: LGPL-2.1-or-later size: 3922900 timestamp: 1723208802469 -- kind: conda - name: libglib - version: 2.80.3 - build: h7025463_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_1.conda - sha256: cae4f5ab6c64512aa6ae9f5c808f9b0aaea19496ddeab3720c118ad0809f7733 - md5: 53c80e0ed9a3905ca7047c03756a5caa - depends: - - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 - - libintl >=0.22.5,<1.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - glib 2.80.3 *_1 - license: LGPL-2.1-or-later - size: 3743922 - timestamp: 1720334986136 - kind: conda name: libglib version: 2.80.3 @@ -2885,26 +2657,6 @@ packages: license: LGPL-2.1-or-later size: 3726738 timestamp: 1723209368854 -- kind: conda - name: libglib - version: 2.80.3 - build: h8a4344b_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda - sha256: 5f5854a7cee117d115009d8f22a70d5f9e28f09cb6e453e8f1dd712e354ecec9 - md5: 6ea440297aacee4893f02ad759e6ffbc - depends: - - libffi >=3.4,<4.0a0 - - libgcc-ng >=12 - - libiconv >=1.17,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 - constrains: - - glib 2.80.3 *_1 - license: LGPL-2.1-or-later - size: 3886207 - timestamp: 1720334852370 - kind: conda name: libgomp version: 14.1.0 @@ -2968,20 +2720,6 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 -- kind: conda - name: libintl - version: 0.22.5 - build: h5728263_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda - sha256: 1b95335af0a3e278b31e16667fa4e51d1c3f5e22d394d982539dfd5d34c5ae19 - md5: aa622c938af057adc119f8b8eecada01 - depends: - - libiconv >=1.17,<2.0a0 - license: LGPL-2.1-or-later - size: 95745 - timestamp: 1712516102666 - kind: conda name: libintl version: 0.22.5 @@ -2996,21 +2734,6 @@ packages: license: LGPL-2.1-or-later size: 95568 timestamp: 1723629479451 -- kind: conda - name: libintl-devel - version: 0.22.5 - build: h5728263_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_2.conda - sha256: 6164fd51abfc7294477c58da77ee1ff9ebc63b9a33404b646407f7fbc3cc7d0d - md5: a2ad82fae23975e4ccbfab2847d31d48 - depends: - - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h5728263_2 - license: LGPL-2.1-or-later - size: 40772 - timestamp: 1712516363413 - kind: conda name: libintl-devel version: 0.22.5 @@ -3099,26 +2822,26 @@ packages: size: 5191980 timestamp: 1721689666180 - kind: conda - name: libnghttp2 - version: 1.58.0 - build: h47da74e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda - sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb - md5: 700ac6ea6d53d5510591c4344d5c989a + name: liblapack + version: 3.9.0 + build: 23_win64_openblas + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_openblas.conda + sha256: bb5e626c47baa9ef54c1a296fb211b3e0f5675192e1d143ee4acc3604cb19bd9 + md5: 01c0e2ac92fd5466a1e468a524b52cfb depends: - - c-ares >=1.23.0,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.2.0,<4.0a0 - license: MIT - license_family: MIT - size: 631936 - timestamp: 1702130036271 + - libblas 3.9.0 23_win64_openblas + constrains: + - libcblas 3.9.0 23_win64_openblas + - liblapacke 3.9.0 23_win64_openblas + - blas * openblas + track_features: + - blas_openblas + license: BSD-3-Clause + license_family: BSD + size: 3973839 + timestamp: 1721689818555 - kind: conda name: libnsl version: 2.0.1 @@ -3152,6 +2875,26 @@ packages: license_family: BSD size: 5563053 timestamp: 1720426334043 +- kind: conda + name: libopenblas + version: 0.3.27 + build: pthreads_hf0a32cb_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libopenblas-0.3.27-pthreads_hf0a32cb_1.conda + sha256: 4e66ab8a83ac2464aa32c8886c7507b8c4ae030c3eedbb5833710dcaf5249713 + md5: 52610e910dd5f1ab578abae44fa19ca3 + depends: + - libflang >=5.0.0,<6.0.0.a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3967835 + timestamp: 1720443575226 - kind: conda name: libpng version: 1.6.43 @@ -3250,22 +2993,6 @@ packages: license: Unlicense size: 865346 timestamp: 1718050628718 -- kind: conda - name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 271133 - timestamp: 1685837707056 - kind: conda name: libssh2 version: 1.11.0 @@ -3527,6 +3254,18 @@ packages: license_family: BSD size: 25951 timestamp: 1719215280117 +- kind: conda + name: llvm-meta + version: 5.0.0 + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/llvm-meta-5.0.0-0.tar.bz2 + sha256: 090bbeacc3297ff579b53f55ad184f05c30e316fe9d5d7df63df1d2ad4578b79 + md5: 213b5b5ad34008147a824460e50a691c + license: BSD-3-Clause + license_family: BSD + size: 2667 - kind: conda name: m2w64-gcc-libgfortran version: 5.3.0 @@ -3690,13 +3429,12 @@ packages: timestamp: 1706900632904 - kind: conda name: matplotlib-base - version: 3.9.1 - build: py311h74b4f7c_2 - build_number: 2 + version: 3.9.2 + build: py311h74b4f7c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py311h74b4f7c_2.conda - sha256: d35b8a68d6d803d4977ccf3354abe14a0d1037c06f7519701c0c3247265d489a - md5: e4a26e6bd32d4af38492ba68caaa16d1 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.2-py311h74b4f7c_0.conda + sha256: a914061120a15618dacefc7268fca6c2e77631c801f58a5771f40f77ed200943 + md5: de8e36c9792f14eed7e11e672f03fbf0 depends: - __glibc >=2.17,<3.0.a0 - certifi >=2020.06.20 @@ -3719,17 +3457,16 @@ packages: - tk >=8.6.13,<8.7.0a0 license: PSF-2.0 license_family: PSF - size: 7989076 - timestamp: 1722732854413 + size: 7969549 + timestamp: 1723759628089 - kind: conda name: matplotlib-base - version: 3.9.1 - build: py311h8f1b1e4_2 - build_number: 2 + version: 3.9.2 + build: py311h8f1b1e4_0 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.1-py311h8f1b1e4_2.conda - sha256: 5643316fa74d20a209243dfcd02e333bdebe5a2f343db43489562cae764771d4 - md5: 7c6a0537db86a1e478bcad40dc28e1fd + url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.2-py311h8f1b1e4_0.conda + sha256: bf130261a7754c2ec72750c1b61ccbcaed11f43af8e98912838dc4b71aa346cd + md5: 6d82670756b404ffb0fc6b693db08e21 depends: - certifi >=2020.06.20 - contourpy >=1.0.1 @@ -3751,8 +3488,8 @@ packages: - vc14_runtime >=14.29.30139 license: PSF-2.0 license_family: PSF - size: 7867717 - timestamp: 1722733881215 + size: 7874159 + timestamp: 1723760590514 - kind: conda name: matplotlib-inline version: 0.1.7 @@ -3876,14 +3613,29 @@ packages: license: X11 AND BSD-3-Clause size: 887465 timestamp: 1715194722503 +- kind: conda + name: nomkl + version: '1.0' + build: h5ca1d4c_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b + md5: 9a66894dfd07c4510beb6b3f9672ccc0 + constrains: + - mkl <0.a0 + license: BSD-3-Clause + license_family: BSD + size: 3843 + timestamp: 1582593857545 - kind: conda name: numpy - version: 2.0.1 + version: 2.1.0 build: py311h35ffc71_0 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py311h35ffc71_0.conda - sha256: 7faee51c39f959e4ff368aaf01abf669fff3018743adfd3f66ce01059bd53834 - md5: e0b858cb640bfa2cd2bae81112a948d5 + url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.0-py311h35ffc71_0.conda + sha256: 7c1bd45085c96b550d06cdfbd9f9475c35d17721fe4ffb986531e304284e07ba + md5: 6e6bf7b95bae97164f683eced6654eba depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -3897,16 +3649,16 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 7585972 - timestamp: 1721966967701 + size: 7614558 + timestamp: 1724036087088 - kind: conda name: numpy - version: 2.0.1 + version: 2.1.0 build: py311hed25524_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py311hed25524_0.conda - sha256: 57508c96084565eb95abfdf5710de924afb157a8d1f2f7e5d3defcbce0200e1f - md5: 7448c8d94dfb4dfa3db1437d8adaf2cd + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.0-py311hed25524_0.conda + sha256: 8b10c80236517a03dd79bf878a0199da2f41ad4b058983423c760ea529716496 + md5: 8de4feabb34ab837dc7e5703affbe89e depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -3920,8 +3672,8 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 8901206 - timestamp: 1721966240264 + size: 8982976 + timestamp: 1724035372918 - kind: conda name: openjpeg version: 2.5.2 @@ -3959,6 +3711,22 @@ packages: license_family: BSD size: 341592 timestamp: 1709159244431 +- kind: conda + name: openmp + version: 5.0.0 + build: vc14_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/openmp-5.0.0-vc14_1.tar.bz2 + sha256: 05c19170938b589f59049679d4e0679c98160fecc6fd1bf721b0f4980bd235dd + md5: 8284c925330fa53668ade00db3c9e787 + depends: + - llvm-meta 5.0.0|5.0.0.* + - vc 14.* + arch: x86_64 + platform: win + license: NCSA + size: 590466 - kind: conda name: openssl version: 3.3.1 @@ -4038,12 +3806,12 @@ packages: - kind: conda name: pango version: 1.54.0 - build: hbb871f6_1 - build_number: 1 + build: hbb871f6_2 + build_number: 2 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda - sha256: ca1189be471fb73ef742b2e61d345dde885c62ad4c256940984c02073fd1c0e1 - md5: bf639fd83deb4404ac988ae927f61e9e + url: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda + sha256: 90327dd606f78ae9c881e285f85bc2b0f57d11c807be58ee3f690742354918b2 + md5: 409c0b778deee649c025b7106549a24f depends: - cairo >=1.18.0,<2.0a0 - fontconfig >=2.14.2,<3.0a0 @@ -4051,14 +3819,14 @@ packages: - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.2,<3.0a0 + - libglib >=2.80.3,<3.0a0 - libpng >=1.6.43,<1.7.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: LGPL-2.1-or-later - size: 450735 - timestamp: 1719840158791 + size: 450610 + timestamp: 1723832834434 - kind: conda name: parso version: 0.8.4 @@ -4074,40 +3842,6 @@ packages: license_family: MIT size: 75191 timestamp: 1712320447201 -- kind: conda - name: pcre2 - version: '10.44' - build: h0f59acf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda - sha256: 90646ad0d8f9d0fd896170c4f3d754e88c4ba0eaf856c24d00842016f644baab - md5: 3914f7ac1761dce57102c72ca7c35d01 - depends: - - bzip2 >=1.0.8,<2.0a0 - - libgcc-ng >=12 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 955778 - timestamp: 1718466128333 -- kind: conda - name: pcre2 - version: '10.44' - build: h3d7b363_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_0.conda - sha256: 44351611091ed72c4682ad23e53d7874334757298ff0ebb2acd769359ae82ab3 - md5: 007d07ab5027e0bf49f6fa660a9f89a0 - depends: - - bzip2 >=1.0.8,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - size: 816867 - timestamp: 1718466930248 - kind: conda name: pcre2 version: '10.44' @@ -4626,33 +4360,33 @@ packages: - kind: conda name: python_abi version: '3.11' - build: 4_cp311 - build_number: 4 + build: 5_cp311 + build_number: 5 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda - sha256: 0be3ac1bf852d64f553220c7e6457e9c047dfb7412da9d22fbaa67e60858b3cf - md5: d786502c97404c94d7d58d258a445a65 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de + md5: 139a8d40c8a2f430df31048949e450de constrains: - python 3.11.* *_cpython license: BSD-3-Clause license_family: BSD - size: 6385 - timestamp: 1695147338551 + size: 6211 + timestamp: 1723823324668 - kind: conda name: python_abi version: '3.11' - build: 4_cp311 - build_number: 4 + build: 5_cp311 + build_number: 5 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-4_cp311.conda - sha256: 67c2aade3e2160642eec0742384e766b20c766055e3d99335681e3e05d88ed7b - md5: 70513332c71b56eace4ee6441e66c012 + url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda + sha256: 9b210e5807dd9c9ed71ff192a95f1872da597ddd10e7cefec93a922fe22e598a + md5: 895b873644c11ccc0ab7dba2d8513ae6 constrains: - python 3.11.* *_cpython license: BSD-3-Clause license_family: BSD - size: 6755 - timestamp: 1695147711935 + size: 6707 + timestamp: 1723823225752 - kind: conda name: pytz version: '2024.1' @@ -4796,43 +4530,19 @@ packages: - kind: conda name: scipy version: 1.14.0 - build: py311h517d4fd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda - sha256: 55bb5502a4795b5b271bd3879846665ad9ac7ffeeea418ba6334accd8d5c71f4 - md5: 481fd009b2d863f526f60ca19cb7880b - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - libgfortran-ng - - libgfortran5 >=12.3.0 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - numpy <2.3 - - numpy >=1.19,<3 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: BSD-3-Clause - license_family: BSD - size: 17709552 - timestamp: 1720323995099 -- kind: conda - name: scipy - version: 1.14.0 - build: py311hd4686c6_1 - build_number: 1 + build: py311hd4686c6_2 + build_number: 2 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.0-py311hd4686c6_1.conda - sha256: 60f67658fe153e37da2bda1847eb8b5142d4ff721308f5bf80e4548fa2425b0f - md5: 46e7cf04c2a67603ff58a2d9b8ca128a + url: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.0-py311hd4686c6_2.conda + sha256: f1b6fb111f21bcaa9bcbf420699522c369351406c57205f578e9e0257f3aa90d + md5: 7dfaff2e99648c216dad8fe895675a7c depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.3 + - numpy >=1.23.5,<2.3 - numpy >=1.19,<3 + - numpy >=1.23.5 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 @@ -4840,23 +4550,23 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD - size: 16062838 - timestamp: 1720324583 + size: 16186599 + timestamp: 1723856944524 - kind: conda name: setuptools - version: 72.1.0 + version: 72.2.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda - sha256: d239e7f1b1a5617eeadda4e91183592f5a15219e97e16bc721d7b0597ee89a80 - md5: e06d4c26df4f958a8d38696f2c344d15 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.2.0-pyhd8ed1ab_0.conda + sha256: 0252f6570de8ff29d489958fc7826677a518061b1aa5e1828a427eec8a7928a4 + md5: 1462aa8b243aad09ef5d0841c745eb89 depends: - python >=3.8 license: MIT license_family: MIT - size: 1462612 - timestamp: 1722586785703 + size: 1459799 + timestamp: 1724163617860 - kind: conda name: six version: 1.16.0 @@ -5786,21 +5496,6 @@ packages: license_family: MIT size: 63274 timestamp: 1641347623319 -- kind: conda - name: zipp - version: 3.19.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - sha256: e3e9c8501f581bfdc4700b83ea283395e237ec6b9b5cbfbedb556e1da6f4fdc9 - md5: 49808e59df5535116f6878b2a820d6f4 - depends: - - python >=3.8 - license: MIT - license_family: MIT - size: 20917 - timestamp: 1718013395428 - kind: conda name: zipp version: 3.20.0 diff --git a/pixi.toml b/pixi.toml index de865133..398e559d 100644 --- a/pixi.toml +++ b/pixi.toml @@ -3,7 +3,7 @@ name = "anybody-tutorial" version = "0.1.0" description = "Add a short description here" authors = ["Morten Enemark Lund "] -channels = ["conda-forge"] +channels = ["conda-forge", "anybody"] platforms = ["win-64","linux-64"] [tasks] @@ -38,13 +38,14 @@ sphinx-book-theme = ">=1.1.3,<2" pytest = ">=8.3.2,<9" -[feature.test.dependencies] +[feature.test.target.win-64.dependencies] pytest = "*" anypytools = "*" debugpy = "*" +anybodycon = "8.1.0beta1.docmarker" -[feature.test.tasks] +[feature.test.target.win-64.tasks] pytest = "pytest" -[environments] -test = ["test"] +[environments.test] +features = ["test"] From 3417a9e478543674830bba6bba11e323b412c568 Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Wed, 21 Aug 2024 13:01:26 +0200 Subject: [PATCH 06/10] run test on windows --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index aa4e5833..84ef76c7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -57,7 +57,7 @@ jobs: continue-on-error: true test-latest: - runs-on: ubuntu-latest + runs-on: windows-latest needs: [find-tag] steps: From c647dff383891458b4d0f78196dc0490c9f67099 Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Wed, 21 Aug 2024 13:50:24 +0200 Subject: [PATCH 07/10] Only run test if it is not a fork and add license secreets --- .github/workflows/build.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 84ef76c7..02f00d71 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -70,11 +70,14 @@ jobs: cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'master' }} environments: test - activate-environment: true + # activate-environment: true - name: Test Snippets - run: pytest - + if: ${{ !github.event.pull_request.head.repo.fork && github.repository == 'anybody/tutorials' }} + run: pixi run -e test pytest + env: + RLM_LICENSE: ${{ secrets.LICENSE_TEST_SERVER }} + RLM_LICENSE_PASSWORD: ${{ secrets.LICENSE_TEST_SERVER_PASSWORD }} build-latest: From 65a886591c84263429f742d8d324c586554f2ad0 Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Wed, 21 Aug 2024 13:52:25 +0200 Subject: [PATCH 08/10] Clean up dependencies between gh action jobs --- .github/workflows/build.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 02f00d71..264c0900 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -58,7 +58,6 @@ jobs: test-latest: runs-on: windows-latest - needs: [find-tag] steps: - uses: actions/checkout@v4 @@ -70,11 +69,11 @@ jobs: cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'master' }} environments: test - # activate-environment: true + activate-environment: true - name: Test Snippets if: ${{ !github.event.pull_request.head.repo.fork && github.repository == 'anybody/tutorials' }} - run: pixi run -e test pytest + run: pytest env: RLM_LICENSE: ${{ secrets.LICENSE_TEST_SERVER }} RLM_LICENSE_PASSWORD: ${{ secrets.LICENSE_TEST_SERVER_PASSWORD }} @@ -82,7 +81,7 @@ jobs: build-latest: runs-on: ubuntu-latest - needs: [find-tag, link-check, test-latest] + needs: [link-check, test-latest] steps: - uses: actions/checkout@v4 From d4819a2cedb529854ba3a69a8dd685a436c9d429 Mon Sep 17 00:00:00 2001 From: Morten Enemark Lund Date: Wed, 21 Aug 2024 13:57:09 +0200 Subject: [PATCH 09/10] Ensure new push cancels previous running workflows --- .github/workflows/build.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 264c0900..19a951d8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,6 +10,9 @@ on: workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + jobs: find-tag: From d2ea0ea81c8661c79e203d81f5853e7c7f49a4d8 Mon Sep 17 00:00:00 2001 From: Jacob Hilmar Adamsen Date: Wed, 21 Aug 2024 13:59:30 +0200 Subject: [PATCH 10/10] Updated lesson 3 snippets --- .gitignore | 1 + .../Downloads/demo.lesson3.any | 152 +++++++++--------- .../Downloads/demo.lesson4.any | 2 +- .../Snippets/lesson2/snip.NewModel.main-2.any | 4 +- .../Snippets/lesson2/snip.NewModel.main-4.any | 2 +- .../Snippets/lesson2/snip.NewModel.main-5.any | 2 +- .../Snippets/lesson2/snip.NewModel.main-6.any | 2 +- .../Snippets/lesson2/snip.NewModel.main-7.any | 2 +- .../Snippets/lesson2/snip.NewModel.main-8.any | 2 +- .../Snippets/lesson2/snip.NewModel.main-9.any | 19 +-- .../Snippets/lesson3/snip.NewModel.main-1.any | 89 ++++++++++ .../Snippets/lesson3/snip.NewModel.main-2.any | 104 ++++++++++++ .../Snippets/lesson3/snip.NewModel.main-3.any | 107 ++++++++++++ .../Snippets/lesson3/snip.NewModel.main-4.any | 118 ++++++++++++++ .../Snippets/lesson3/snip.NewModel.main-5.any | 116 +++++++++++++ .../Snippets/lesson3/snip.NewModel.main-6.any | 116 +++++++++++++ .../Snippets/lesson3/snip.NewModel.main-7.any | 121 ++++++++++++++ .../Snippets/lesson3/snip.NewModel.main-8.any | 119 ++++++++++++++ .../Snippets/lesson4/snip.NewModel.main-1.any | 119 ++++++++++++++ A_Getting_started_anyscript/lesson3.md | 112 ++++--------- conf.py | 1 + 21 files changed, 1137 insertions(+), 173 deletions(-) create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-1.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-2.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-3.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-4.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-5.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-6.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-7.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-8.any create mode 100644 A_Getting_started_anyscript/Snippets/lesson4/snip.NewModel.main-1.any diff --git a/.gitignore b/.gitignore index 6cde1e8f..b7f9d672 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ _build/ *.docx *.pyc# pixi environments .pixi +__pycache__ diff --git a/A_Getting_started_anyscript/Downloads/demo.lesson3.any b/A_Getting_started_anyscript/Downloads/demo.lesson3.any index 4e2023ed..54337643 100644 --- a/A_Getting_started_anyscript/Downloads/demo.lesson3.any +++ b/A_Getting_started_anyscript/Downloads/demo.lesson3.any @@ -1,95 +1,87 @@ -// Todo: Write a small description of your model here + // Todo: Write a small description of your model here Main = { - // The actual body model goes in this folder AnyFolder ArmModel = { - + // Global Reference Frame AnyFixedRefFrame GlobalRef = { - // Todo: Add points for grounding of the model here - }; // Global reference frame - // Segments - AnyFolder Segs = { - AnySeg UpperArm = - { - r0 = {0.3, 0, 0}; - //rDot0 = {0, 0, 0}; - //Axes0 = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; - //omega0 = {0, 0, 0}; - Mass = 2; - Jii = {0.001, 0.01, 0.01}; - //Jij = {0, 0, 0}; - //sCoM = {0, 0, 0}; - AnyDrawSeg drw = {}; - AnyRefNode ShoulderNode = { - sRel = {-0.2,0,0}; - }; - AnyRefNode ElbowNode = { - sRel = {0.2,0,0}; - }; - AnyRefNode DeltodeusA = { - sRel = {-0.1,0,0.02}; - }; - AnyRefNode DeltodeusB = { - sRel = {-0.1,0,-0.02}; - }; - AnyRefNode Brachialis = { - sRel = {0.1,0,0.01}; - }; - AnyRefNode BicepsShort = { - sRel = {-0.1,0,0.03}; - }; - AnyRefNode Brachioradialis = { - sRel = {0.05,0,0.02}; - }; - AnyRefNode TricepsShort = { - sRel = {-0.1,0,-0.01}; - }; - - }; //UpperArm - AnySeg ForeArm = { - r0 = {0, 0.3, 0}; - Axes0 =RotMat(-90*pi/180, z); + }; // Global Reference Frame - Mass = 2.0; - Jii = {0.001,0.01,0.01}; - AnyRefNode ElbowNode = { - sRel = {-0.2,0,0}; - }; - AnyRefNode HandNode = { - sRel = {0.2,0,0}; - }; - AnyRefNode Brachialis = { - sRel = {-0.1,0,0.02}; - }; - AnyRefNode Brachioradialis = { - sRel = {0.0,0,0.02}; - }; - AnyRefNode Biceps = { - sRel = {-0.15,0,0.01}; - }; - AnyRefNode Triceps = { - sRel = {-0.25,0,-0.05}; - }; - AnyDrawSeg DrwSeg = {}; - }; // ForeArm - - }; // Segs folder - - // Todo. Add the model elements such as - // segments, joints, and muscles here. + // Segments + AnyFolder Segs = { - }; // ArmModel - - // The study: Operations to be performed on the model + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + // Todo: Add the model elements such as + // segments, joints, and muscles here. + + }; // Segs folder + + }; // The study: Operations to be performed on the model + // ArmModel AnyBodyStudy ArmStudy = { AnyFolder &Model = .ArmModel; Gravity = {0.0, -9.81, 0.0}; }; - -}; // Main - +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Downloads/demo.lesson4.any b/A_Getting_started_anyscript/Downloads/demo.lesson4.any index 6e5f6b0c..8980201e 100644 --- a/A_Getting_started_anyscript/Downloads/demo.lesson4.any +++ b/A_Getting_started_anyscript/Downloads/demo.lesson4.any @@ -91,8 +91,8 @@ Main = { }; // Segs folder + // Joints AnyFolder Jnts = { - //--------------------------------- AnyRevoluteJoint Shoulder = { Axis = z; diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any index b187de7b..9b169bf9 100644 --- a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-2.any @@ -1,4 +1,6 @@ - // Todo: Write a small description of your model here +//expect_errors = ["''", "Model loading skipped"] + +// Todo: Write a small description of your model here Main = { // The actual body model goes in this folder diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any index 804c69f4..cdc5cd90 100644 --- a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-4.any @@ -7,7 +7,7 @@ AnyFolder ArmModel = { // Global Reference Frame AnyFixedRefFrame GlobalRef = { // Todo: Add points for grounding of the model here - }; + }; // Segments diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any index 45dff7f7..690302db 100644 --- a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-5.any @@ -7,7 +7,7 @@ AnyFolder ArmModel = { // Global Reference Frame AnyFixedRefFrame GlobalRef = { // Todo: Add points for grounding of the model here - }; + }; // Segments diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any index 368120e4..72b1607d 100644 --- a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-6.any @@ -7,7 +7,7 @@ AnyFolder ArmModel = { // Global Reference Frame AnyFixedRefFrame GlobalRef = { // Todo: Add points for grounding of the model here - }; + }; // Segments diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any index 5f10a0da..ecbf54d2 100644 --- a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-7.any @@ -7,7 +7,7 @@ AnyFolder ArmModel = { // Global Reference Frame AnyFixedRefFrame GlobalRef = { // Todo: Add points for grounding of the model here - }; + }; // Segments diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any index 309b0bc3..5f816b55 100644 --- a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-8.any @@ -7,7 +7,7 @@ AnyFolder ArmModel = { // Global Reference Frame AnyFixedRefFrame GlobalRef = { // Todo: Add points for grounding of the model here - }; + }; // Segments diff --git a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any index a7f0696e..281ec33b 100644 --- a/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any +++ b/A_Getting_started_anyscript/Snippets/lesson2/snip.NewModel.main-9.any @@ -1,13 +1,13 @@ // Todo: Write a small description of your model here Main = { -// The actual body model goes in this folder -AnyFolder ArmModel = { - - // Global Reference Frame - AnyFixedRefFrame GlobalRef = { - // Todo: Add points for grounding of the model here - }; + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + }; // Segments @@ -46,6 +46,7 @@ AnySeg UpperArm = { };§ }; //UpperArm + // ForeArm AnySeg ForeArm = { r0 = {0.3, 0.0, 0.0}; Mass = 2.0; @@ -70,7 +71,7 @@ AnySeg UpperArm = { }; AnyDrawSeg DrwSeg = {}; }; // ForeArm - + }; // Segs folder }; @@ -80,4 +81,4 @@ AnySeg UpperArm = { Gravity = {0.0, -9.81, 0.0}; }; -}; \ No newline at end of file +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-1.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-1.any new file mode 100644 index 00000000..1aec2c75 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-1.any @@ -0,0 +1,89 @@ + // Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + //# BEGIN SNIPPET 1 +// Global Reference Frame +AnyFixedRefFrame GlobalRef = { + // Todo: Add points for grounding of the model here + +}; // Global Reference Frame + //# END SNIPPET 1 + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + // Todo: Add the model elements such as + // segments, joints, and muscles here. + + }; // Segs folder + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-2.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-2.any new file mode 100644 index 00000000..eefba148 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-2.any @@ -0,0 +1,104 @@ + // Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + //# BEGIN SNIPPET 1 +// Global Reference Frame +AnyFixedRefFrame GlobalRef = { + §AnyDrawRefFrame DrwGlobalRef = {}; + + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + };§ +}; // Global Reference Frame + //# END SNIPPET 1 + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + // Todo: Add the model elements such as + // segments, joints, and muscles here. + + }; // Segs folder + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-3.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-3.any new file mode 100644 index 00000000..183dfc26 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-3.any @@ -0,0 +1,107 @@ + // Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + //# BEGIN SNIPPET 1 +AnyDrawRefFrame DrwGlobalRef = { + §ScaleXYZ = {0.1, 0.1, 0.1}; + RGB = {0,1,0};§ +}; +//# END SNIPPET 1 + + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + }; + }; // Global Reference Frame + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + // Todo: Add the model elements such as + // segments, joints, and muscles here. + + }; // Segs folder + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-4.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-4.any new file mode 100644 index 00000000..00274069 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-4.any @@ -0,0 +1,118 @@ + // Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + AnyDrawRefFrame DrwGlobalRef = { + ScaleXYZ = {0.1, 0.1, 0.1}; + RGB = {0,1,0}; + }; + + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + }; + }; // Global Reference Frame + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; +//# BEGIN SNIPPET 1 + }; // ForeArm +}; // Segs folder + +§ +// Joints +AnyFolder Jnts = { + + //--------------------------------- + AnyRevoluteJoint Shoulder = { + + AnyRefNode &GroundNode = ..GlobalRef.Shoulder; + AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; + + Axis = z; + + }; // Shoulder joint +}; // Jnts folder§ +//# END SNIPPET 1 + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-5.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-5.any new file mode 100644 index 00000000..64afba98 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-5.any @@ -0,0 +1,116 @@ + // Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + AnyDrawRefFrame DrwGlobalRef = { + ScaleXYZ = {0.1, 0.1, 0.1}; + RGB = {0,1,0}; + }; + + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + }; + }; // Global Reference Frame + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm +}; // Segs folder + + +// Joints +AnyFolder Jnts = { + + //--------------------------------- + AnyRevoluteJoint Shoulder = { +//# BEGIN SNIPPET 1 +AnyRefNode &GroundNode = ..GlobalRef.Shoulder; +AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; +//# END SNIPPET 1 + Axis = z; + + }; // Shoulder joint +}; // Jnts folder + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-6.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-6.any new file mode 100644 index 00000000..930da3e1 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-6.any @@ -0,0 +1,116 @@ + // Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + AnyDrawRefFrame DrwGlobalRef = { + ScaleXYZ = {0.1, 0.1, 0.1}; + RGB = {0,1,0}; + }; + + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + }; + }; // Global Reference Frame + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm +}; // Segs folder + + +// Joints +AnyFolder Jnts = { + + //--------------------------------- + AnyRevoluteJoint Shoulder = { + + AnyRefNode &GroundNode = ..GlobalRef.Shoulder; + AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; +//# BEGIN SNIPPET 1 +Axis = z; +//# END SNIPPET 1 + }; // Shoulder joint +}; // Jnts folder + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-7.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-7.any new file mode 100644 index 00000000..d9fa4212 --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-7.any @@ -0,0 +1,121 @@ +//expect_errors = ["';' unexpected", "Model loading skipped"] + +// Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + AnyDrawRefFrame DrwGlobalRef = { + ScaleXYZ = {0.1, 0.1, 0.1}; + RGB = {0,1,0}; + }; + + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + }; + }; // Global Reference Frame + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm +}; // Segs folder + +//# BEGIN SNIPPET 1 +// Joints +AnyFolder Jnts = { + //--------------------------------- + AnyRevoluteJoint Shoulder = { + AnyRefNode &GroundNode = ..GlobalRef.Shoulder; + AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; + Axis = z; + }; // Shoulder joint + + §AnyRevoluteJoint Elbow = { + Axis = z; + AnyRefNode &UpperArmNode = ; + AnyRefNode &ForeArmNode = ; + }; // Elbow joint§ +}; // Jnts folder +//# END SNIPPET 1 + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-8.any b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-8.any new file mode 100644 index 00000000..8486648a --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson3/snip.NewModel.main-8.any @@ -0,0 +1,119 @@ + // Todo: Write a small description of your model here + +Main = { + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + AnyDrawRefFrame DrwGlobalRef = { + ScaleXYZ = {0.1, 0.1, 0.1}; + RGB = {0,1,0}; + }; + + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + }; + }; // Global Reference Frame + + // Segments + AnyFolder Segs = { + + //UpperArm + AnySeg UpperArm = { + r0 = {0.0, 0.3, 0.0}; + Axes0 = RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; //UpperArm + + // ForeArm + AnySeg ForeArm = { + r0 = {0.3, 0.0, 0.0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm +}; // Segs folder + +// Joints +AnyFolder Jnts = { + //--------------------------------- + AnyRevoluteJoint Shoulder = { + AnyRefNode &GroundNode = ..GlobalRef.Shoulder; + AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; + Axis = z; + }; // Shoulder joint + +//# BEGIN SNIPPET 1 +AnyRevoluteJoint Elbow = { + Axis = z; + AnyRefNode &UpperArmNode = §Main.ArmModel.Segs.UpperArm.ElbowNode§; + AnyRefNode &ForeArmNode = §Main.ArmModel.Segs.ForeArm.ElbowNode§; +}; // Elbow joint +//# END SNIPPET 1 +}; // Jnts folder + + }; // The study: Operations to be performed on the model + // ArmModel + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; \ No newline at end of file diff --git a/A_Getting_started_anyscript/Snippets/lesson4/snip.NewModel.main-1.any b/A_Getting_started_anyscript/Snippets/lesson4/snip.NewModel.main-1.any new file mode 100644 index 00000000..8980201e --- /dev/null +++ b/A_Getting_started_anyscript/Snippets/lesson4/snip.NewModel.main-1.any @@ -0,0 +1,119 @@ +// Todo: Write a small description of your model here + +Main = { + + // The actual body model goes in this folder + AnyFolder ArmModel = { + + // Global Reference Frame + AnyFixedRefFrame GlobalRef = { + + AnyDrawRefFrame DrwGlobalRef = { + ScaleXYZ = {0.1, 0.1, 0.1}; + RGB = {0,1,0}; + }; + AnyRefNode Shoulder = { + sRel = {0,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {0.05,0,0}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.05,0,0}; + }; + AnyRefNode BicepsLong = { + sRel = {0.1,0,0}; + }; + AnyRefNode TricepsLong = { + sRel = {-0.1,0,0}; + }; + }; // Global reference frame + + // Segments + AnyFolder Segs = { + AnySeg UpperArm = { + r0 = {0, 0.3, 0}; + Axes0 =RotMat(-90*pi/180, z); + Mass = 2; + Jii = {0.001, 0.01, 0.01}; + AnyDrawSeg drw = {}; + + AnyRefNode ShoulderNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode ElbowNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode DeltodeusA = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode DeltodeusB = { + sRel = {-0.1,0,-0.02}; + }; + AnyRefNode Brachialis = { + sRel = {0.1,0,0.01}; + }; + AnyRefNode BicepsShort = { + sRel = {-0.1,0,0.03}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.05,0,0.02}; + }; + AnyRefNode TricepsShort = { + sRel = {-0.1,0,-0.01}; + }; + }; // UpperArm + + AnySeg ForeArm = { + r0 = {0.3, 0, 0}; + Mass = 2.0; + Jii = {0.001,0.01,0.01}; + AnyRefNode ElbowNode = { + sRel = {-0.2,0,0}; + }; + AnyRefNode HandNode = { + sRel = {0.2,0,0}; + }; + AnyRefNode Brachialis = { + sRel = {-0.1,0,0.02}; + }; + AnyRefNode Brachioradialis = { + sRel = {0.0,0,0.02}; + }; + AnyRefNode Biceps = { + sRel = {-0.15,0,0.01}; + }; + AnyRefNode Triceps = { + sRel = {-0.25,0,-0.05}; + }; + AnyDrawSeg DrwSeg = {}; + }; // ForeArm + + }; // Segs folder + + // Joints + AnyFolder Jnts = { + //--------------------------------- + AnyRevoluteJoint Shoulder = { + Axis = z; + AnyRefNode &GroundNode = ..GlobalRef.Shoulder; + AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; + }; // Shoulder joint + + AnyRevoluteJoint Elbow = { + Axis = z; + AnyRefNode &UpperArmNode = Main.ArmModel.Segs.UpperArm.ElbowNode; + AnyRefNode &ForeArmNode = Main.ArmModel.Segs.ForeArm.ElbowNode; + }; // Elbow joint + + }; // Jnts folder + + }; // MyModel + + // The study: Operations to be performed on the model + AnyBodyStudy ArmStudy = { + AnyFolder &Model = .ArmModel; + Gravity = {0.0, -9.81, 0.0}; + }; + +}; // Main diff --git a/A_Getting_started_anyscript/lesson3.md b/A_Getting_started_anyscript/lesson3.md index 543b0f17..cc14006c 100644 --- a/A_Getting_started_anyscript/lesson3.md +++ b/A_Getting_started_anyscript/lesson3.md @@ -26,6 +26,7 @@ You can think of joints in two different ways: two independent segments in AnyBody, they will have 2 x 6 = 12 degrees of freedom in total. + Joints in AnyBody take away (or constrain) some of these degrees of freedom with the different joint types (e.g. revolute, spherical, prismatic etc.) differing only in the number and type of degrees of freedom they constrain. @@ -34,13 +35,10 @@ differing only in the number and type of degrees of freedom they constrain. Every model needs a global reference frame to serve as a ground reference point for measuring positions & orientations from. It is already defined in the model template that you originally used, and is shown below: -```AnyScriptDoc -AnyFixedRefFrame GlobalRef = { - -   // Todo: Add points for grounding -   // of the model here - -}; // Global reference frame +```{literalinclude} Snippets/lesson3/snip.NewModel.main-1.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` **Just like with segments, you can add point nodes to the global reference frame for attaching joints and muscles. There is however no @@ -49,26 +47,10 @@ concept of mass associated with this frame.** You will now add some nodes to the global frame by copy-pasting the following lines into your model (Alternatively use the class inserter and then copy-paste the class properties alone): -```AnyScriptDoc - AnyFixedRefFrame GlobalRef = { -  §AnyDrawRefFrame DrwGlobalRef = {}; - -   AnyRefNode Shoulder = { -     sRel = {0,0,0}; -   }; -   AnyRefNode DeltodeusA = { -     sRel = {0.05,0,0}; -   }; -   AnyRefNode DeltodeusB = { -     sRel = {-0.05,0,0}; -   }; -   AnyRefNode BicepsLong = { -     sRel = {0.1,0,0}; -   }; -   AnyRefNode TricepsLong = { -     sRel = {-0.1,0,0}; -   };§ -}; // Global reference frame +```{literalinclude} Snippets/lesson3/snip.NewModel.main-2.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` The first line, "`AnyDrawRefFrame` ..." merely displays the global @@ -78,11 +60,10 @@ system. Let us scale down the display size and change its color to distinguish it from the yellow segments: -```AnyScriptDoc -AnyDrawRefFrame DrwGlobalRef = { -  §ScaleXYZ = {0.1, 0.1, 0.1}; -  RGB = {0,1,0};§ -}; +```{literalinclude} Snippets/lesson3/snip.NewModel.main-3.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` ## Creating a revolute joint @@ -91,23 +72,10 @@ We can now connect the upper arm to the global reference frame through a shoulde For this planar 2-D model, where we simplify the shoulder as a simple revolute joint (also known as a hinge joint). We create a new `AnyFolder` object, to contain all joints in the model: -```AnyScriptDoc -    }; // LowerArm -  }; // Segs folder - -§AnyFolder Jnts = { - -    //--------------------------------- -    AnyRevoluteJoint Shoulder = { - -      AnyRefNode &GroundNode = ..GlobalRef.Shoulder; -      AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; - - Axis = z; - -   }; // Shoulder joint - -}; // Jnts folder§ +```{literalinclude} Snippets/lesson3/snip.NewModel.main-4.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` The `AnyRevoluteJoint` class creates a revolute joint object connecting two nodes on different segments. @@ -119,14 +87,15 @@ The `AnyRevoluteJoint` class creates a revolute joint object connecting two node The `AnyRevoluteJoint` object named "Shoulder", needs to know which nodes on each segment to connect. For this purpose, we have the lines: -```AnyScriptDoc -AnyRefNode &GroundNode = ..GlobalRef.Shoulder; -AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; +```{literalinclude} Snippets/lesson3/snip.NewModel.main-5.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` -**They refer to two nodes that we created earlier, located on the "GlobalRef" and "UpperArm" +**They refer to two nodes that we created earlier, located on the `GlobalRef` and `UpperArm` segments. Notice the two dots in front of the names. They signify that -the "GlobalRef" and "Segs" folders are defined two levels outside the folder +the `GlobalRef` and `Segs` folders are defined two levels outside the folder we are writing into, in the model tree.** If you neglected the two dots, then AnyBody would search for the two objects in the "Shoulder" folder and fail @@ -152,8 +121,10 @@ sure that the definition is correct. We then have: -```AnyScriptDoc -Axis = z; +```{literalinclude} Snippets/lesson3/snip.NewModel.main-6.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` **Every node on a rigid body segment has its own reference frame which moves along with the segment. @@ -186,21 +157,10 @@ We will next add a revolute elbow joint. While the definition is similar to the you will learn to use a handy tool to define the references. Copy-paste the skeleton of the elbow joint as follows: -```AnyScriptDoc -AnyFolder Jnts = { -       //--------------------------------- - AnyRevoluteJoint Shoulder = { - Axis = z; - AnyRefNode &GroundNode = ..GlobalRef.Shoulder; - AnyRefNode &UpperArmNode = ..Segs.UpperArm.ShoulderNode; - }; // Shoulder joint - - §AnyRevoluteJoint Elbow = { - Axis = z; - AnyRefNode &UpperArmNode = ; - AnyRefNode &ForeArmNode = ; - }; // Elbow joint§ -}; // Jnts folder +```{literalinclude} Snippets/lesson3/snip.NewModel.main-7.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` The node references within "Elbow" are not pointing at @@ -224,12 +184,10 @@ into the Elbow joint definition where you placed the cursor.** Repeat the process to expand the ForeArm segment and insert its ElbowNode in the line below to obtain this: -```AnyScriptDoc -AnyRevoluteJoint Elbow = { -  Axis = z; -  AnyRefNode &UpperArmNode = §Main.ArmModel.Segs.UpperArm.ElbowNode§; -  AnyRefNode &ForeArmNode = §Main.ArmModel.Segs.ForeArm.ElbowNode§; -}; // Elbow joint +```{literalinclude} Snippets/lesson3/snip.NewModel.main-8.any +:language: AnyScriptDoc +:start-after: //# BEGIN SNIPPET 1 +:end-before: //# END SNIPPET 1 ``` It seems like everything is connected now, but we still get this diff --git a/conf.py b/conf.py index 73dc4c0f..0f0c6ae9 100644 --- a/conf.py +++ b/conf.py @@ -120,6 +120,7 @@ def tagged_commit(): "galleries/*", ".pixi", "EXLCLUDED_*", + ".pytest_cache", ]