sciris 3.2.6__tar.gz → 3.2.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sciris-3.2.9/.claude-plugin/marketplace.json +18 -0
- {sciris-3.2.6 → sciris-3.2.9}/.github/workflows/schedule_tests.yaml +2 -1
- {sciris-3.2.6 → sciris-3.2.9}/.github/workflows/test_downstream.yaml +1 -0
- {sciris-3.2.6 → sciris-3.2.9}/.github/workflows/test_sciris.yaml +1 -0
- {sciris-3.2.6 → sciris-3.2.9}/CHANGELOG.rst +15 -0
- {sciris-3.2.6 → sciris-3.2.9}/CLAUDE.md +32 -0
- {sciris-3.2.6/sciris.egg-info → sciris-3.2.9}/PKG-INFO +8 -2
- {sciris-3.2.6 → sciris-3.2.9}/README.rst +7 -1
- sciris-3.2.9/claude_plugin/.claude-plugin/plugin.json +21 -0
- sciris-3.2.9/claude_plugin/README.md +58 -0
- sciris-3.2.9/claude_plugin/skills/sciris-advanced/SKILL.md +76 -0
- sciris-3.2.9/claude_plugin/skills/sciris-arrays/SKILL.md +72 -0
- sciris-3.2.9/claude_plugin/skills/sciris-dates/SKILL.md +77 -0
- sciris-3.2.9/claude_plugin/skills/sciris-dicts/SKILL.md +79 -0
- sciris-3.2.9/claude_plugin/skills/sciris-files/SKILL.md +64 -0
- sciris-3.2.9/claude_plugin/skills/sciris-intro/SKILL.md +67 -0
- sciris-3.2.9/claude_plugin/skills/sciris-parallel/SKILL.md +74 -0
- sciris-3.2.9/claude_plugin/skills/sciris-plotting/SKILL.md +76 -0
- sciris-3.2.9/claude_plugin/skills/sciris-printing/SKILL.md +59 -0
- sciris-3.2.9/claude_plugin/skills/sciris-utils/SKILL.md +85 -0
- sciris-3.2.9/context7.json +4 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/overview.rst +7 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_asd.py +185 -128
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_fileio.py +51 -49
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_odict.py +25 -25
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_parallel.py +4 -5
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_profiling.py +15 -3
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_version.py +2 -2
- {sciris-3.2.6 → sciris-3.2.9/sciris.egg-info}/PKG-INFO +8 -2
- {sciris-3.2.6 → sciris-3.2.9}/sciris.egg-info/SOURCES.txt +14 -7
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_odict.py +1 -1
- sciris-3.2.6/tests/pylint_report.txt +0 -1057
- sciris-3.2.6/tests/test_both_parallelizers.py +0 -27
- sciris-3.2.6/tests/test_mp_objdict.py +0 -52
- sciris-3.2.6/tests/test_objdict_pickle_detailed.py +0 -61
- sciris-3.2.6/tests/test_parallel_mp.py +0 -12
- sciris-3.2.6/tests/test_parallel_odict.py +0 -12
- sciris-3.2.6/tests/test_pickle_objdict.py +0 -31
- {sciris-3.2.6 → sciris-3.2.9}/.github/workflows/pypi_release.yaml +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/.gitignore +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/.pylintrc +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/.readthedocs.yaml +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/CODE_OF_CONDUCT.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/CONTRIBUTING.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/LICENSE +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/MANIFEST.in +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/STYLE_GUIDE.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/.gitignore +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/Makefile +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/README.md +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_build/html/_static/scripts/bootstrap.js.LICENSE.txt +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_build/html/_static/scripts/fontawesome.js.LICENSE.txt +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_static/theme_overrides.css +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_templates/custom-class-template.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_templates/custom-function-template.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_templates/custom-module-template.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_templates/footer.html +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/_templates/page.html +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_asd.asd.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_asd.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.alpinecolormap.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.arraycolors.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.bandedcolormap.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.bicolormap.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.colormapdemo.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.gridcolors.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.hex2rgb.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.hsv2rgb.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.manualcolorbar.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.midpointnorm.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.orangebluecolormap.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.parulacolormap.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.rgb2hex.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.rgb2hsv.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.sanitizecolor.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.shifthue.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.turbocolormap.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_colors.vectocolor.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_dataframe.dataframe.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_dataframe.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.Timer.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.date.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.datedelta.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.daterange.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.datetoyear.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.day.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.daydiff.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.elapsedtimestr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.getdate.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.now.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.randsleep.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.readdate.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.tic.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.time.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.timedsleep.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.timer.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.toc.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.toctic.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_datetime.yeartodate.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.Blobject.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.Failed.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.Spreadsheet.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.UnpicklingError.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.UnpicklingWarning.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.dumpstr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.getfilelist.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.getfilepaths.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.glob.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.ispath.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.jsonify.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.jsonpickle.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.jsonunpickle.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.load.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadany.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadjson.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadobj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadspreadsheet.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadstr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadtext.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadyaml.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.loadzip.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.makefilepath.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.makepath.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.path.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.printjson.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.readjson.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.readyaml.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.rmpath.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.sanitizefilename.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.sanitizejson.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.sanitizepath.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.save.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.savejson.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.saveobj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.savespreadsheet.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.savetext.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.saveyaml.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.savezip.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.thisdir.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.thisfile.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.thispath.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.unzip.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_fileio.zsave.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.approx.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.cat.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.convolve.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.count.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.dataindex.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.fillnans.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.findfirst.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.findinds.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.findlast.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.findnans.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.findnearest.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.gauss1d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.gauss2d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.getvaliddata.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.getvalidinds.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.inclusiverange.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.isprime.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.linregress.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.nanequal.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.normalize.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.normsum.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.numdigits.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.perturb.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.randround.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.rmnans.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.rolling.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.safedivide.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.sanitize.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.sem.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.similarity.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.smooth.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_math.smoothinterp.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.Equal.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.IterObj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.equal.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.flattendict.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.getnested.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.iternested.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.iterobj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.makenested.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.mergenested.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.nestedloop.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.search.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_nested.setnested.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.argparse.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.asobj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.counter.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.ddict.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.dictobj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.objdict.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.odict.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_odict.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_parallel.Parallel.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_parallel.cpu_count.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_parallel.cpuload.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_parallel.loadbalancer.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_parallel.memload.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_parallel.parallelize.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_parallel.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.SIticks.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.ScirisDateFormatter.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.animation.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.ax3d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.bar3d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.boxoff.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.commaticks.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.dateformatter.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.datenumformatter.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.emptyfig.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.fig3d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.figlayout.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.fonts.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.get_rows_cols.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.getrowscols.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.loadfig.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.maximize.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.movelegend.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.orderlegend.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.plot3d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.savefig.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.savefigs.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.savemovie.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.scatter3d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.separatelegend.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.setaxislim.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.setxlim.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.setylim.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.stackedbar.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_plotting.surf3d.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.arraymean.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.arraymedian.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.blank.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.capture.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.classatt.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.colorize.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.createcollist.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.heading.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.humanize_bytes.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.indent.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.objatt.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.objectid.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.objmeth.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.objprop.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.objrepr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.percentcomplete.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.pr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.prepr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.prettyobj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printarr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printblue.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printcyan.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printdata.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printgreen.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printmagenta.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printmean.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printmedian.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printred.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printtologfile.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printv.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printvars.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.printyellow.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.progressbar.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.progressbars.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.quickobj.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.sigfig.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.sigfiground.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.sigfigs.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_printing.slacknotification.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.LimitExceeded.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.benchmark.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.checkmem.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.checkram.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.cprofile.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.listfuncs.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.mprofile.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.profile.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.resourcemonitor.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_profiling.tracecalls.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_settings.ScirisOptions.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_settings.help.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_settings.parse_env.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_settings.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.KeyNotFoundError.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.LazyModule.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.Link.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.LinkException.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.asciify.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.autolist.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.checktype.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.cp.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.dcp.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.download.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.fast_uuid.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.flexstr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.getplatform.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.getuser.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.htmlify.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.ifelse.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.importbyname.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.importbypath.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.isarray.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.isfunc.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.isiterable.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.isjupyter.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.islinux.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.ismac.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.ismodule.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.isnumber.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.isstring.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.iswindows.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.mergedicts.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.mergelists.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.newlinejoin.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.pp.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.promotetoarray.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.promotetolist.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.robust_dcp.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.runcommand.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.sanitizestr.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.sha.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.strjoin.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.strsplit.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.suggest.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.swapdict.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.toarray.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.tolist.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.traceback.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.transposelist.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.tryexcept.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.uniquename.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.urlopen.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.uuid.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_utils.wget.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_version.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.compareversions.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.freeze.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.getcaller.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.gitinfo.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.loadarchive.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.loadmetadata.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.metadata.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.require.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/_autosummary/sciris.sc_versioning.savearchive.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/all.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/containers.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/files.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/index.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/math.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/parallel.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/printing.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/api/utils.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/build_docs +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/conf.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/contributing.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/favicon.ico +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/freeze_env +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/index.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/requirements.txt +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/sciris-citation.bib +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/sciris-logo-grey-small.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/sciris-logo-grey.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/sciris-logo-white-small.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/sciris-logo.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/sciris-showcase-code.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/sciris-showcase-output.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/README.md +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/clean_outputs +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/dancing_lines.gif +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-advanced.gif +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-arrays.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-dates.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-dicts.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-files.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-intro.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-parallel.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-plotting.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-printing.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/img-utils.png +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/index.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/run_tutorials +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/sim1/sim.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/sim2/sim.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_advanced.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_arrays.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_dates.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_dicts.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_files.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_intro.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_parallel.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_plotting.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_printing.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/tutorials/tut_utils.ipynb +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/docs/whatsnew.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/pyproject.toml +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/README.md +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/__init__.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/_extras/README.md +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/_extras/__init__.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/_extras/ansicolors.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/_extras/legacy.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/fancy.mplstyle +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_colors.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_dataframe.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_datetime.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_math.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_nested.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_plotting.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_printing.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_settings.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_utils.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/sc_versioning.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris/simple.mplstyle +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris.egg-info/dependency_links.txt +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris.egg-info/requires.txt +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/sciris.egg-info/top_level.txt +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/setup.cfg +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/.coveragerc +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/README.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/check_coverage +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/check_style +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/archive_2023-04-19.zip +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/deadclass.obj +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/deadclass.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/exampledata.xlsx +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/examplefont.ttf +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/make_archive.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/make_deadclass.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/pickle_2021-01-01.obj +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/files/pickle_2022-01-01.obj +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/pytest.ini +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/regression/README.rst +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/regression/run_downstream +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/regression/run_regression +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/regression/sciris2021-01-01.yml +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/regression/sciris2022-01-01.yml +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/regression/sciris2023-01-01.yml +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/regression/setup_envs +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/requirements.txt +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/run_tests +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/sc_test_utils.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/showcase_sciris.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/showcase_vanilla.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_asd.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_colors.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_dataframe.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_datetime.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_fileio.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_math.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_nested.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_parallel.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_plotting.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_printing.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_profiling.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_settings.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_utils.py +0 -0
- {sciris-3.2.6 → sciris-3.2.9}/tests/test_versioning.py +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sciris-marketplace",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "Sciris"
|
|
5
|
+
},
|
|
6
|
+
"metadata": {
|
|
7
|
+
"description": "Sciris skills for Claude Code"
|
|
8
|
+
},
|
|
9
|
+
"plugins": [
|
|
10
|
+
{
|
|
11
|
+
"name": "sciris",
|
|
12
|
+
"source": "./claude_plugin",
|
|
13
|
+
"description": "Skills covering all Sciris features: arrays, dicts, files, plotting, parallelization, dates, printing, utilities, and advanced features",
|
|
14
|
+
"version": "0.1.0",
|
|
15
|
+
"keywords": ["sciris", "scientific-python"]
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -7,6 +7,21 @@ All major updates to Sciris are documented here.
|
|
|
7
7
|
|
|
8
8
|
By import convention, components of the Sciris library are listed beginning with ``sc.``, e.g. ``sc.odict()``.
|
|
9
9
|
|
|
10
|
+
Version 3.2.9 (2026-03-06)
|
|
11
|
+
--------------------------
|
|
12
|
+
#. Allowed ``verbose=0`` in :func:`sc.loadbalancer() <sc_parallel.loadbalancer>`.
|
|
13
|
+
#. Allowed :func:`sc.makefilepath() <sc_fileio.makefilepath>` to create folders when no filename is specified.
|
|
14
|
+
#. Added a Claude Code plugin: install by adding https://github.com/sciris/sciris as a marketplace.
|
|
15
|
+
|
|
16
|
+
Version 3.2.8 (2026-02-28)
|
|
17
|
+
--------------------------
|
|
18
|
+
#. Changed resolution order in :class:`sc.objdict() <sc_odict.objdict>` so that dunder attributes (e.g. ``__await__``) are never accidentally set as dict keys. Attempting to set an existing attribute as a key now raises ``KeyError`` instead of ``ValueError``.
|
|
19
|
+
#. Fixed a bug in :class:`sc.profile() <sc_profiling.profile>` that prevented profiling information from being printed for certain combinations of filenames.
|
|
20
|
+
|
|
21
|
+
Version 3.2.7 (2026-02-18)
|
|
22
|
+
--------------------------
|
|
23
|
+
#. Refactored :class:`sc.asd() <sc_asd.asd>` to be more robust to different parameter inputs and different objective function return values.
|
|
24
|
+
|
|
10
25
|
Version 3.2.6 (2026-02-12)
|
|
11
26
|
--------------------------
|
|
12
27
|
#. Added :class:`sc.argparse() <sc_odict.argparse>`, a simple argument parser based on ``sc.objdict``.
|
|
@@ -66,6 +66,38 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
66
66
|
- **Downstream tests:** `.github/workflows/test_downstream.yaml` (tests dependent packages)
|
|
67
67
|
- **Release workflow:** `.github/workflows/pypi_release.yaml` (automated PyPI publishing)
|
|
68
68
|
|
|
69
|
+
## Claude Code Plugin
|
|
70
|
+
|
|
71
|
+
Sciris includes a Claude Code skills plugin in `claude_plugin/` that provides domain-specific skills for working with Sciris. The plugin is registered via `.claude-plugin/marketplace.json`.
|
|
72
|
+
|
|
73
|
+
### Installation
|
|
74
|
+
Users can install the plugin by adding `https://github.com/sciris/sciris` as a Claude Code marketplace (see `/install-plugin`).
|
|
75
|
+
|
|
76
|
+
### Available Skills
|
|
77
|
+
The plugin provides 10 skills covering all major Sciris domains:
|
|
78
|
+
- **sciris-intro** - Basic Sciris features and quick reference
|
|
79
|
+
- **sciris-arrays** - Array operations (`sc.findinds()`, `sc.findnearest()`, `sc.toarray()`, etc.)
|
|
80
|
+
- **sciris-dicts** - Containers (`sc.odict()`, `sc.objdict()`, `sc.counter()`, etc.)
|
|
81
|
+
- **sciris-files** - File I/O (`sc.save()`, `sc.load()`, `sc.savejson()`, etc.)
|
|
82
|
+
- **sciris-plotting** - Matplotlib extensions (`sc.boxoff()`, `sc.dateformatter()`, etc.)
|
|
83
|
+
- **sciris-parallel** - Parallelization (`sc.parallelize()`, `sc.loadbalancer()`)
|
|
84
|
+
- **sciris-dates** - Date/time handling (`sc.date()`, `sc.daterange()`, `sc.timer()`)
|
|
85
|
+
- **sciris-printing** - Printing and formatting (`sc.heading()`, `sc.sigfig()`, `sc.progressbar()`)
|
|
86
|
+
- **sciris-utils** - Utilities (`sc.mergedicts()`, `sc.tryexcept()`, `sc.checkmem()`, etc.)
|
|
87
|
+
- **sciris-advanced** - Advanced features (`sc.odict` subclassing, nested operations, versioning)
|
|
88
|
+
|
|
89
|
+
### MCP Servers
|
|
90
|
+
The plugin also configures Context7 and GitMCP servers for accessing up-to-date Sciris documentation.
|
|
91
|
+
|
|
92
|
+
### Plugin Structure
|
|
93
|
+
```
|
|
94
|
+
claude_plugin/
|
|
95
|
+
.claude-plugin/plugin.json # Plugin manifest
|
|
96
|
+
skills/ # Skill definitions (one SKILL.md per skill)
|
|
97
|
+
.claude-plugin/
|
|
98
|
+
marketplace.json # Marketplace registration
|
|
99
|
+
```
|
|
100
|
+
|
|
69
101
|
## Architecture Overview
|
|
70
102
|
|
|
71
103
|
Sciris is a scientific Python utilities library with a modular design organized around functional domains. Published in the Journal of Open Source Software (JOSS), Sciris aims to streamline the development of scientific software by making it easier to perform common tasks through "simplifying interfaces" that reduce boilerplate code and focus on scientific clarity.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sciris
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.9
|
|
4
4
|
Summary: Fast, flexible tools to simplify scientific Python
|
|
5
5
|
Author-email: Sciris Development Team <info@sciris.org>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -79,7 +79,13 @@ Using conda: ``conda install -c conda-forge sciris``
|
|
|
79
79
|
|
|
80
80
|
Using uv: ``uv add sciris``
|
|
81
81
|
|
|
82
|
-
*Requires Python >= 3.
|
|
82
|
+
*Requires Python >= 3.9*.
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
AI integration
|
|
86
|
+
--------------
|
|
87
|
+
|
|
88
|
+
Sciris has MCP servers on `Context 7 <https://context7.com/sciris/sciris>`_ and `GitMCP <https://gitmcp.io/sciris/sciris>`_. It also has a Claude Code plugin: to install, add this repository (https://github.com/sciris/sciris) to the Claude Code marketplace and from there install the plugin.
|
|
83
89
|
|
|
84
90
|
|
|
85
91
|
Tests
|
|
@@ -33,7 +33,13 @@ Using conda: ``conda install -c conda-forge sciris``
|
|
|
33
33
|
|
|
34
34
|
Using uv: ``uv add sciris``
|
|
35
35
|
|
|
36
|
-
*Requires Python >= 3.
|
|
36
|
+
*Requires Python >= 3.9*.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
AI integration
|
|
40
|
+
--------------
|
|
41
|
+
|
|
42
|
+
Sciris has MCP servers on `Context 7 <https://context7.com/sciris/sciris>`_ and `GitMCP <https://gitmcp.io/sciris/sciris>`_. It also has a Claude Code plugin: to install, add this repository (https://github.com/sciris/sciris) to the Claude Code marketplace and from there install the plugin.
|
|
37
43
|
|
|
38
44
|
|
|
39
45
|
Tests
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sciris",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Claude skills for Sciris features covering arrays, containers, file I/O, plotting, parallelization, dates, printing, utilities, and advanced features",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Sciris"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/sciris/sciris",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"keywords": ["sciris", "scientific-python"],
|
|
11
|
+
"mcpServers": {
|
|
12
|
+
"context7": {
|
|
13
|
+
"type": "http",
|
|
14
|
+
"url": "https://mcp.context7.com/mcp"
|
|
15
|
+
},
|
|
16
|
+
"gitmcp": {
|
|
17
|
+
"type": "http",
|
|
18
|
+
"url": "https://gitmcp.io/sciris/sciris"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Sciris Claude Code Plugin
|
|
2
|
+
|
|
3
|
+
This folder contains a [Claude Code](https://docs.anthropic.com/en/docs/claude-code) skills plugin that helps Claude work more effectively with [Sciris](https://sciris.org).
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
The plugin provides Claude with domain-specific knowledge about Sciris features, organized into focused skills. When you ask Claude to help with Sciris code, these skills give it detailed guidance on the right functions, patterns, and idioms to use.
|
|
8
|
+
|
|
9
|
+
The plugin also configures MCP servers ([Context7](https://context7.com) and [GitMCP](https://gitmcp.io)) so Claude can look up current Sciris documentation on the fly.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
In Claude Code, add the Sciris repository as a marketplace:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
/install-plugin https://github.com/sciris/sciris
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Or manually add `https://github.com/sciris/sciris` as a marketplace in your Claude Code settings.
|
|
20
|
+
|
|
21
|
+
## Available skills
|
|
22
|
+
|
|
23
|
+
| Skill | Description |
|
|
24
|
+
|-------|-------------|
|
|
25
|
+
| **sciris-intro** | Basic Sciris features and quick reference |
|
|
26
|
+
| **sciris-arrays** | Array operations (`sc.findinds`, `sc.findnearest`, `sc.toarray`, etc.) |
|
|
27
|
+
| **sciris-dicts** | Containers (`sc.odict`, `sc.objdict`, `sc.counter`, etc.) |
|
|
28
|
+
| **sciris-files** | File I/O (`sc.save`, `sc.load`, `sc.savejson`, etc.) |
|
|
29
|
+
| **sciris-plotting** | Matplotlib extensions (`sc.boxoff`, `sc.dateformatter`, etc.) |
|
|
30
|
+
| **sciris-parallel** | Parallelization (`sc.parallelize`, `sc.loadbalancer`) |
|
|
31
|
+
| **sciris-dates** | Date/time handling (`sc.date`, `sc.daterange`, `sc.timer`) |
|
|
32
|
+
| **sciris-printing** | Printing and formatting (`sc.heading`, `sc.sigfig`, `sc.progressbar`) |
|
|
33
|
+
| **sciris-utils** | Utilities (`sc.mergedicts`, `sc.tryexcept`, `sc.checkmem`, etc.) |
|
|
34
|
+
| **sciris-advanced** | Advanced features (`sc.odict` subclassing, nested operations, versioning) |
|
|
35
|
+
|
|
36
|
+
## Organization
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
claude_plugin/
|
|
40
|
+
├── README.md # This file
|
|
41
|
+
├── .claude-plugin/
|
|
42
|
+
│ └── plugin.json # Plugin manifest (name, MCP servers, metadata)
|
|
43
|
+
└── skills/
|
|
44
|
+
├── sciris-intro/SKILL.md
|
|
45
|
+
├── sciris-arrays/SKILL.md
|
|
46
|
+
├── sciris-dicts/SKILL.md
|
|
47
|
+
├── sciris-files/SKILL.md
|
|
48
|
+
├── sciris-plotting/SKILL.md
|
|
49
|
+
├── sciris-parallel/SKILL.md
|
|
50
|
+
├── sciris-dates/SKILL.md
|
|
51
|
+
├── sciris-printing/SKILL.md
|
|
52
|
+
├── sciris-utils/SKILL.md
|
|
53
|
+
└── sciris-advanced/SKILL.md
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Each skill is a single `SKILL.md` file with YAML frontmatter (name and description for triggering) followed by markdown content with usage examples and API guidance.
|
|
57
|
+
|
|
58
|
+
The marketplace registration file at `.claude-plugin/marketplace.json` (in the repo root) points to this folder.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sciris-advanced
|
|
3
|
+
description: Use when working with advanced Sciris features — nested dictionaries (sc.makenested, sc.getnested, sc.setnested, sc.iternested, sc.search, sc.iterobj), context blocks (sc.capture, sc.tryexcept), sc.smoothinterp interpolation, sc.asd optimization, sc.animation, sc.savemovie, or sc.printjson.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sciris Advanced Features
|
|
7
|
+
|
|
8
|
+
Reference for nested dicts, context blocks, interpolation, optimization, and animation. See full tutorial: `docs/tutorials/tut_advanced.ipynb`.
|
|
9
|
+
|
|
10
|
+
If you need more detail, use your MCP tools (Context7 or GitMCP) to look up current Sciris documentation, or consult the other Sciris skills.
|
|
11
|
+
|
|
12
|
+
## Nested Dictionaries
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
nest = {}
|
|
16
|
+
sc.makenested(nest, ['key1', 'key1.1']) # Create nested structure
|
|
17
|
+
sc.makenested(nest, ['key2', 'key2.1', 'key2.1.1'])
|
|
18
|
+
|
|
19
|
+
# Iterate over all "twigs" (leaf paths)
|
|
20
|
+
for twig in sc.iternested(nest):
|
|
21
|
+
sc.setnested(nest, twig, value) # Set value at path
|
|
22
|
+
val = sc.getnested(nest, twig) # Get value at path
|
|
23
|
+
|
|
24
|
+
# Search by key or value
|
|
25
|
+
sc.search(nest, 'key2.1.1') # Find by key pattern
|
|
26
|
+
sc.search(nest, value=5) # Find by value
|
|
27
|
+
|
|
28
|
+
# Transform all values
|
|
29
|
+
sc.iterobj(nest, transform_func, inplace=True)
|
|
30
|
+
|
|
31
|
+
sc.printjson(nest) # Pretty-print as JSON
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Context Blocks
|
|
35
|
+
|
|
36
|
+
### Capture output
|
|
37
|
+
```python
|
|
38
|
+
with sc.capture() as text:
|
|
39
|
+
verbose_function() # All print output → text variable
|
|
40
|
+
lines = text.splitlines()
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Exception handling
|
|
44
|
+
```python
|
|
45
|
+
# Simple: exit gracefully at first exception
|
|
46
|
+
with sc.tryexcept():
|
|
47
|
+
risky_function()
|
|
48
|
+
|
|
49
|
+
# Advanced: accumulate exception history
|
|
50
|
+
tryexc = None
|
|
51
|
+
for i in range(1000):
|
|
52
|
+
with sc.tryexcept(history=tryexc, verbose=False) as tryexc:
|
|
53
|
+
fickle_function()
|
|
54
|
+
tryexc.disp() # Show all exceptions
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Interpolation
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
# Smoother than np.interp, more conservative than scipy cubic spline
|
|
61
|
+
y_new = sc.smoothinterp(newx, origx, origy, smoothness=5)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Optimization (Adaptive Stochastic Descent)
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
result = sc.asd(objective_func, x0, verbose=False)
|
|
68
|
+
# Often faster and more accurate than scipy.optimize.minimize for noisy problems
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Animation
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
frames = [plt.plot(np.cumsum(np.random.randn(100))) for i in range(20)]
|
|
75
|
+
sc.savemovie(frames, 'animation.gif')
|
|
76
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sciris-arrays
|
|
3
|
+
description: Use when working with NumPy arrays in Sciris — finding indices, nearest values, concatenation, handling NaN/missing values, smoothing data, 2D Gaussian smoothing, or linear regression with sc.findinds, sc.findnearest, sc.cat, sc.rmnans, sc.fillnans, sc.smooth, sc.rolling, sc.linregress.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sciris Math and Array Tools
|
|
7
|
+
|
|
8
|
+
Reference for array utilities that simplify NumPy workflows. See full tutorial: `docs/tutorials/tut_arrays.ipynb`.
|
|
9
|
+
|
|
10
|
+
If you need more detail, use your MCP tools (Context7 or GitMCP) to look up current Sciris documentation, or consult the other Sciris skills.
|
|
11
|
+
|
|
12
|
+
## Array Indexing
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
import numpy as np
|
|
16
|
+
import sciris as sc
|
|
17
|
+
|
|
18
|
+
data = np.random.rand(100)
|
|
19
|
+
|
|
20
|
+
# Find indices where condition is true
|
|
21
|
+
inds = sc.findinds(data > 0.9) # vs (data>0.9).nonzero()[0]
|
|
22
|
+
|
|
23
|
+
# Find nearest value
|
|
24
|
+
ind = sc.findnearest(data, 0.5) # vs np.argmin(abs(data - 0.5))
|
|
25
|
+
|
|
26
|
+
# Works on lists too (not just arrays)
|
|
27
|
+
ind = sc.findnearest([81, 78, 66, 25], 50)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Creating/Concatenating Arrays
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
sc.cat(1, 2, 3) # array([1, 2, 3])
|
|
34
|
+
|
|
35
|
+
# Add row to matrix — vs np.concatenate([data, np.atleast_2d(np.array([1,2]))])
|
|
36
|
+
data = sc.cat(data, [1, 2])
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Missing Values
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
d0 = [1, 2, np.nan, 4, np.nan, 6, np.nan, np.nan, np.nan, 10]
|
|
43
|
+
|
|
44
|
+
d1 = sc.rmnans(d0) # Remove NaNs
|
|
45
|
+
d2 = sc.fillnans(d0, 0) # Replace with zeros
|
|
46
|
+
d3 = sc.fillnans(d0, 'linear') # Linear interpolation
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Smoothing
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
# 1D smoothing
|
|
53
|
+
smooth = sc.smooth(data, 7) # Gaussian-like smoothing
|
|
54
|
+
roll = sc.rolling(data, 7) # Rolling average
|
|
55
|
+
|
|
56
|
+
# 2D Gaussian smoothing
|
|
57
|
+
smooth2d = sc.gauss2d(raw_2d, scale=2)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Other Math
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
# Random rounding: 0.7 rounds up 70% of the time
|
|
64
|
+
rounded = sc.randround(data)
|
|
65
|
+
|
|
66
|
+
# Linear regression
|
|
67
|
+
m, b = sc.linregress(x, y)
|
|
68
|
+
|
|
69
|
+
# 3D plotting helpers
|
|
70
|
+
ax = sc.ax3d(121) # Create 3D subplot
|
|
71
|
+
sc.bar3d(data, ax=ax) # 3D bar plot
|
|
72
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sciris-dates
|
|
3
|
+
description: Use when working with dates, times, or timing in Sciris — sc.timer, sc.tic, sc.toc, sc.date, sc.daterange, sc.datedelta, sc.now, sc.getdate, sc.time, sc.timedsleep, sc.randsleep, date format conversion, or timing code blocks.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sciris Dates and Times
|
|
7
|
+
|
|
8
|
+
Reference for timing and date utilities. See full tutorial: `docs/tutorials/tut_dates.ipynb`.
|
|
9
|
+
|
|
10
|
+
If you need more detail, use your MCP tools (Context7 or GitMCP) to look up current Sciris documentation, or consult the other Sciris skills.
|
|
11
|
+
|
|
12
|
+
## Timing Code
|
|
13
|
+
|
|
14
|
+
### Timer object
|
|
15
|
+
```python
|
|
16
|
+
T = sc.timer()
|
|
17
|
+
|
|
18
|
+
zeros = np.zeros((n, n))
|
|
19
|
+
T.tt('Make zeros') # toc-then-tic (prints elapsed, resets)
|
|
20
|
+
|
|
21
|
+
rand = np.random.rand(n, n)
|
|
22
|
+
T.tt('Make random')
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Context manager
|
|
26
|
+
```python
|
|
27
|
+
with sc.timer('My operation'):
|
|
28
|
+
expensive_work()
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Timer statistics
|
|
32
|
+
```python
|
|
33
|
+
T = sc.timer()
|
|
34
|
+
for i in range(10):
|
|
35
|
+
work(i)
|
|
36
|
+
T.tt(f'Iteration {i}')
|
|
37
|
+
|
|
38
|
+
print(T.mean(), T.std(), T.min(), T.max())
|
|
39
|
+
T.plot() # Plot timing results
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Sleep Utilities
|
|
43
|
+
|
|
44
|
+
```python
|
|
45
|
+
sc.timedsleep(0.3) # Like time.sleep()
|
|
46
|
+
|
|
47
|
+
# In a loop: accounts for computation time so each iteration = exact duration
|
|
48
|
+
for i in range(5):
|
|
49
|
+
sc.timedsleep('start')
|
|
50
|
+
do_work()
|
|
51
|
+
sc.timedsleep(0.3, verbose=True) # Total iteration = 0.3s
|
|
52
|
+
|
|
53
|
+
sc.randsleep(0.2) # Sleep random 0-0.4s (mean 0.2)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Date Utilities
|
|
57
|
+
|
|
58
|
+
### Current time
|
|
59
|
+
```python
|
|
60
|
+
sc.time() # Unix timestamp (time.time())
|
|
61
|
+
sc.now() # datetime.datetime.now()
|
|
62
|
+
sc.getdate() # Formatted string: '2024-Mar-15 14:30:00'
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Date conversion
|
|
66
|
+
```python
|
|
67
|
+
sc.date('2022-03-04') # str → datetime
|
|
68
|
+
sc.date('04-03-2022', format='mdy') # Explicit format
|
|
69
|
+
sc.date('04-03-2022', format='dmy') # Day-month-year
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Date ranges and math
|
|
73
|
+
```python
|
|
74
|
+
dates = sc.daterange('2022-02-02', '2022-03-04') # List of date strings
|
|
75
|
+
dates = sc.daterange('2022-01-01', '2022-12-31', as_date=True) # As datetime objects
|
|
76
|
+
newdates = sc.datedelta(dates, months=10) # Add 10 months
|
|
77
|
+
```
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sciris-dicts
|
|
3
|
+
description: Use when working with Sciris dictionaries or dataframes — sc.odict, sc.objdict, sc.dataframe, integer indexing of dicts, enumitems, object-syntax access, dataframe creation with dtypes, appendrow, or sc.dataframe.cat.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sciris Dictionaries and Dataframes
|
|
7
|
+
|
|
8
|
+
Reference for Sciris container types. See full tutorial: `docs/tutorials/tut_dicts.ipynb`.
|
|
9
|
+
|
|
10
|
+
If you need more detail, use your MCP tools (Context7 or GitMCP) to look up current Sciris documentation, or consult the other Sciris skills.
|
|
11
|
+
|
|
12
|
+
## odict — Ordered Dict with Index Access
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
od = sc.odict(a=['some', 'strings'], b=[1, 2, 3])
|
|
16
|
+
|
|
17
|
+
od['a'] # Key access (like dict)
|
|
18
|
+
od[0] # Integer index access
|
|
19
|
+
od.keys()[0] # Keys returns a list (not dict_keys)
|
|
20
|
+
|
|
21
|
+
for i, k, v in od.enumitems(): # Enumerate with key and value
|
|
22
|
+
print(f'Item {i}: {k} = {v}')
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**When NOT to use odict:** When your dict has integer keys (ambiguous with index access).
|
|
26
|
+
|
|
27
|
+
**odict vs objdict:** odict is slightly faster (nanoseconds per op). Use odict for millions of operations; objdict for everything else.
|
|
28
|
+
|
|
29
|
+
## objdict — odict + Object Syntax
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
ob = sc.objdict(key1=[1, 2], key2=[3, 4])
|
|
33
|
+
|
|
34
|
+
ob.key1 # Object syntax (no quotes!)
|
|
35
|
+
ob['key1'] # Dict syntax
|
|
36
|
+
ob[0] # Index syntax
|
|
37
|
+
# All three are equivalent
|
|
38
|
+
|
|
39
|
+
# Especially handy in f-strings:
|
|
40
|
+
print(f'{ob.key1 = }') # No nested quote issues
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## dataframe — Enhanced pd.DataFrame
|
|
44
|
+
|
|
45
|
+
### Creation shortcuts
|
|
46
|
+
```python
|
|
47
|
+
# Simpler than pd.DataFrame(dict(x=x, y=y, z=z))
|
|
48
|
+
df = sc.dataframe(x=x, y=y, z=z)
|
|
49
|
+
|
|
50
|
+
# With dtypes
|
|
51
|
+
df = sc.dataframe(x=x, y=y, z=z, dtypes=[str, float, bool])
|
|
52
|
+
|
|
53
|
+
# Columns with types
|
|
54
|
+
df = sc.dataframe(columns=dict(x=str, y=float, z=bool), data=data)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Display
|
|
58
|
+
```python
|
|
59
|
+
df.disp() # Show full dataframe (no truncation)
|
|
60
|
+
df.disp(precision=1, ncols=5, nrows=10) # Customized display
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Indexing
|
|
64
|
+
```python
|
|
65
|
+
df['values', 1] # Column + row access
|
|
66
|
+
df[1] # Auto iloc fallback (KeyError in pandas)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### In-place manipulation
|
|
70
|
+
```python
|
|
71
|
+
df.appendrow(['d', 4, 0]) # Append row in-place
|
|
72
|
+
|
|
73
|
+
# Concatenate anything
|
|
74
|
+
df = sc.dataframe.cat(
|
|
75
|
+
sc.dataframe(x=['a'], y=[1]), # Dataframe
|
|
76
|
+
dict(x=['b'], y=[2]), # Dict
|
|
77
|
+
[['c', 3]], # Raw data
|
|
78
|
+
)
|
|
79
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sciris-files
|
|
3
|
+
description: Use when saving or loading files with Sciris — sc.save, sc.load, sc.savejson, sc.loadjson, sc.saveyaml, sc.readyaml, sc.savearchive, sc.loadarchive, sc.savefig, sc.loadmetadata, sc.getfilelist, sc.thispath, sc.makefilepath, sc.rmpath, sc.metadata, sc.compareversions, sc.require, or version/reproducibility tracking.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sciris Files and Versioning
|
|
7
|
+
|
|
8
|
+
Reference for file I/O and version management. See full tutorial: `docs/tutorials/tut_files.ipynb`.
|
|
9
|
+
|
|
10
|
+
If you need more detail, use your MCP tools (Context7 or GitMCP) to look up current Sciris documentation, or consult the other Sciris skills.
|
|
11
|
+
|
|
12
|
+
## Save/Load Any Object
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
sc.save('my-sim.obj', sim) # Gzipped pickle (works with any Python object)
|
|
16
|
+
sim = sc.load('my-sim.obj') # Load — methods and class still work
|
|
17
|
+
sc.zsave('fast.obj', sim) # Zstandard compression (slightly faster)
|
|
18
|
+
# sc.load() auto-detects compression format
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## JSON
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
sc.savejson('data.json', obj) # Saves JSONifiable parts of any object
|
|
25
|
+
data = sc.loadjson('data.json') # Returns dict (not original object)
|
|
26
|
+
data = sc.readjson(json_string) # Parse JSON from string
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## YAML (JSON superset with comments)
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
data = sc.readyaml(yaml_string) # Parse YAML (supports comments)
|
|
33
|
+
sc.saveyaml('config.yaml', data)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## File Utilities
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
sc.getfilelist('*.ipynb') # List files matching pattern
|
|
40
|
+
sc.thispath() # Path of current file (use instead of pathlib.Path)
|
|
41
|
+
sc.makefilepath('data/out.csv', makedirs=True) # Ensure path exists
|
|
42
|
+
sc.rmpath('file_or_folder') # Remove file or folder (auto-detects)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Versioning and Reproducibility
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
md = sc.metadata() # Collect all environment metadata
|
|
49
|
+
sc.compareversions(np, '>1.0') # Version comparison (returns True/False)
|
|
50
|
+
sc.require('numpy>1.20') # Warn/raise if requirement not met
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Metadata-enhanced figures
|
|
54
|
+
```python
|
|
55
|
+
sc.savefig('fig.png', comments='My analysis') # Saves with metadata (use instead of plt.savefig)
|
|
56
|
+
md = sc.loadmetadata('fig.png') # Retrieve metadata later
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Metadata-enhanced archives
|
|
60
|
+
```python
|
|
61
|
+
sc.savearchive('sim.zip', sim, files='script.py', comments='Full run')
|
|
62
|
+
sim = sc.loadarchive('sim.zip') # Restore object
|
|
63
|
+
md = sc.loadmetadata('sim.zip') # Get metadata separately
|
|
64
|
+
```
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sciris-intro
|
|
3
|
+
description: Use when the user needs to implement a basic Sciris features — finding array values, plotting with date formatting, objdict containers, saving/loading objects, or parallelization.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sciris introduction
|
|
7
|
+
|
|
8
|
+
Quick reference for Sciris' most commonly used features. See the full tutorial: `docs/tutorials/tut_intro.ipynb`.
|
|
9
|
+
|
|
10
|
+
If you need more detail, use your MCP tools (Context7 or GitMCP) to look up current Sciris documentation, or consult the other Sciris skills.
|
|
11
|
+
|
|
12
|
+
## Core Patterns
|
|
13
|
+
|
|
14
|
+
### Array operations
|
|
15
|
+
Use the `sciris-arrays` skill for more details.
|
|
16
|
+
```python
|
|
17
|
+
import numpy as np
|
|
18
|
+
import sciris as sc
|
|
19
|
+
|
|
20
|
+
data = np.random.rand(50)
|
|
21
|
+
inds = sc.findinds(data > 0.9) # Find indices matching condition
|
|
22
|
+
mean_str = sc.arraymean(data) # Mean ± std as string
|
|
23
|
+
joined = sc.strjoin(inds) # Join values into comma-separated string
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Quick plotting with dates
|
|
27
|
+
Use the `sciris-dates` skill for more details.
|
|
28
|
+
```python
|
|
29
|
+
dates = sc.daterange('2022-01-01', '2022-02-28', as_date=True)
|
|
30
|
+
values = 1e6 * np.random.randn(59)**2
|
|
31
|
+
|
|
32
|
+
data = sc.dataframe(x=dates, y=values) # Shortcut to pd.DataFrame
|
|
33
|
+
plt.scatter(data.x, data.y)
|
|
34
|
+
sc.dateformatter() # Format date axis
|
|
35
|
+
sc.SIticks() # SI notation on y-axis
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Flexible containers
|
|
39
|
+
Use the `sciris-dicts` skill for more details.
|
|
40
|
+
```python
|
|
41
|
+
data = sc.objdict(a=[1,2,3], b=[4,5,6])
|
|
42
|
+
assert data.a == data['a'] == data[0] # Three ways to access
|
|
43
|
+
assert data[:].sum() == 21 # Slice and sum
|
|
44
|
+
for i, key, value in data.enumitems(): # Enumerate with keys
|
|
45
|
+
print(f'Item {i}: {key} = {value}')
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Save/load any object
|
|
49
|
+
Use the `sciris-files` skill for more details.
|
|
50
|
+
```python
|
|
51
|
+
sc.save('my-sim.obj', sim) # Save (gzipped pickle)
|
|
52
|
+
new_sim = sc.load('my-sim.obj') # Load — methods still work!
|
|
53
|
+
new_sim.plot()
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Parallelization
|
|
57
|
+
Use the `sciris-parallel` skill for more details.
|
|
58
|
+
```python
|
|
59
|
+
results = sc.parallelize(func, iterkwargs=dict(scale=[40,30,20,10]), x_offset=5, y_offset=10)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Plot configuration
|
|
63
|
+
Use the `sciris-plotting` skill for more details.
|
|
64
|
+
```python
|
|
65
|
+
sc.options(dpi=120, jupyter=True) # Set DPI and backend
|
|
66
|
+
sc.boxoff() # Remove top/right spines
|
|
67
|
+
```
|