Package: nengo-bones
NengoBonesThe aim of this project is to automate the configuration of repositories
throughout the Nengo ecosystem.  The idea is that we can centralize the
design and maintenance of “meta” project code (such as CI testing
infrastructure) in this project, rather than each repository maintaining that
code independently.The basic methodology for this project is a templating system in which
there are common templates for meta files that are populated with
data in each downstream project.  Projects control this templating through the.nengobones.ymlconfiguration file, which defines the information used to
fill in the templates.Wherever possible, we try to do this templating in such a way that downstream
projects will be automatically updated when an update is made innengo-bones. However, some files cannot be updated automatically and
require downstream repos to manually run a script to update those files.Note that this repository itself is configured using thenengo-bonestemplating system, so if you would like an example of how to use it, check outthe source code.InstallationNengoBones is designed to be used based on themasterbranch (although we
release occasional stable checkpoints to PyPI). This can be installed viagitclonehttps://github.com/nengo/nengo-bones.gitpipinstall-e./nengo-bonesBasic usageThe first step is to fill in the.nengobones.ymlconfiguration file.  You
can use the one in this repository as a starting point, or seethe documentationfor more details.  This file should be
placed in the top level of your project.All of the manually generated template files can then be rendered by running
this command in the same folder as the.nengobones.ymlfile:bonesgenerateSeebones generate--helporthe documentationfor a full list of command line options.DocumentationCommand line usageDemonstration of available configuration optionsAPI referenceRelease History22.11.15 (November 15, 2022)AddedAdded support for newone_pageoption innengo-sphinx-theme. (#101)Added thebones-format-notebookscript to apply automated formatting, cleanup,
and static checking to Jupyter notebooks. (#32)Static script will now check thatbones-format-notebookhas been applied to all
notebooks in thedocsdirectory. (#32)Addedremote-script.shCI script for running other CI scripts on a remote device.
(#124)Addedisortconfiguration topyproject.tomland check import order during static checks. (#121)Officially support and test against Python 3.9. (#136)Addedskipoption to codespell config, which can be used to specify files that
should be ignored. (#138)Added support for projects with type hints through thepy_typedsection. (#140)Addedmin_pythonoption to the main section. The defaultpython_requiresinsetup.pyis now based on this, if not overridden. (#140)Added support for changing the main branch name with themain_branchconfig option. (#145)Added template forversion.py. (#151)Addedapachelicense type. (#160)Addedproprietarylicense type. (#162)Added several actions for use with Github Actions:setupinitializes  a python environment,generate-and-checkrunsbones-generateandbones-check,run-scriptruns a CI script such asstatic.sh, andcoverage-reportgenerates combined coverage reports. (#166)Added support fordocformatter(and static checks will now enforce that
docformatter has been applied). (#168)Added support for building and releasing Python projects through thedeployCI script. (#172)Added abonescheck-deployscript that checks several items that we
depend on for releases. (#172)ChangedRestrict pylint version to <2.5 due to issue when the package being checked
is not installed in the current environment. (#103)Increased minimumpylintversion to 2.5.1 (#32)Documentation[source]links now point to GitHub. (#117)Separate tokens,PYPI_TOKENandPYPI_TEST_TOKEN, must now be specified
for deploying to PyPI and TestPyPI, respectively. (#127)Builds for this repository now run on TravisCI.com instead of TravisCI.org. (#130)Drop support for Python 3.5. (#123)Doc script will now install Sphinx>=3.1.2. (#137)Codespell ignore words is now specified via thecodespell.ignore_wordssection
ofsetup_cfg(instead of in the static CI script config). As a result, it will
now apply to all invocations of codespell (not just from the static script). (#138)bones-format-notebook--checkwill now require that allcodespellchecks pass.
(#138)Switched to new version of Codecov uploader and added checksum verification. (#150)Increased minimumblackversion to 21.12b0. (#104,#159)License fields insetup.pyare now set usinglicense_rst.type. (#161)Trove classifiers insetup.pyare now sorted alphabetically. (#161)Updated Nengo license and renamed to ABR license. (#157)The license type is now specified through alicensekey at the top level.
If not specified, it defaults toproprietary. (#157)All CI scripts now support running either through Github Actions or TravisCI.
(#166)Added additional config options to mypysetup.cfgtemplate. (#170)Restrict setuptools version to <64 (fixes issues with various code inspection tools
like mypy, pylint, IDE integrations). (#173)Removed thedeploy_distsconfiguration option for thedeployscript,
and replaced it with a booleanwheeloption. (#172)Consolidated all scripts under a singlebonescommand. Subcommands have the
same names as before, without thebones-prefix (e.g.,bones-generateis nowbones generate). (#172)RemovedRemovedbefore_script,before_cache,before_deploy, andafter_deploysteps from CI scripts (they weren’t actually used anywhere). (#166)Removedanalytics_idoption fordocs/conf.py. Create a customdocs/conf.pytemplate and override theanalyticsblock if you need to customize analytics
tracking. (#169)Removed support for TravisCI in CI scripts. All downstream repositories should
switch to use Github Actions. (#172)FixedIntermittent failures installing miniconda in the remote script have been fixed by
retrying the miniconda install if it fails. (#130)Fixed an issue in which Codecov would not report on files where a file in a
deeper folder shares the same name. (#132)Fixed an issue in which CI scripts did not have access to the same configuration
options as other templates. (#144)Removed pylint disable forbad-continuationas it no longer exists. (#163)Removed pylint disable forno-self-useas it is now optional. (#163)Static checks will not try to checkdocsdirectory if it doesn’t exist. (#165)Static checks will no longer assume that CI scripts are in a folder named.ci(it will look for any scripts in the same folder as the static script). (#166)Black will now ignore excluded files even if that filename is passed directly
to black (e.g. when running through a precommit hook or IDE plugin). (#161)Only delete remote build directories more than a day old. (#172)0.11.1 (April 13, 2020)ChangedRendered documentation will not be uploaded if the html build fails (it will still
be uploaded if the linkchecker/doctest builds fail). (#98)Rendered documentation will not be uploaded on cron builds. (#98)Docs script will now clean up the built doc directory before execution, if it exists
(e.g., because the docs job is being rerun). (#96)0.11.0 (April 13, 2020)AddedDownstream repos will now be automatically updated when nengo-bones is updated.
(#97)Addedslack_notificationsoption to.travis.ymlto enable Slack notifications
for failing builds. (#97)ChangedWill now usenengo-bonesandnengo-sphinx-thememaster builds (instead of the
latest release), to streamline the process of distributing changes to those core
repos. (#97)0.10.0 (March 19, 2020)AddedAddedautoautosummary_change_modulesoption (for use withnengo_sphinx_theme.ext.autoautosummary). (#86)ChangedDocs script will now usenengo_sphinx_theme.ext.backoff, which adds
exponential backoff functionality to Sphinx requests. (#86)0.9.1 (March 17, 2020)FixedFixed deployment tag conditional check in.travis.ymltemplate. (#83)0.9.0 (January 28, 2020)ChangedThebones-checkthat TravisCI does now prints diffs for easier
debugging. (#80)FixedFixed an issue with the.travis.ymltemplate caused by the new
Jinja2 release. (#80)0.8.0 (January 10, 2020)ChangedThe default distribution used in builds is nowxenial. (#79)0.7.3 (January 8, 2020)RemovedRemoved coverage.py early starting logic. This is no longer necessary as of Nengo
3.0 and causes problems with the new coverage.py 5.0 release. (#78)0.7.2 (December 2, 2019)ChangedFailing to install miniconda inremote.shis no longer considered a build
error (this can occur, for example, when rerunning a build that already has
miniconda installed). (#71)0.7.1 (November 14, 2019)AddedAdded support fornengo_sphinx_theme.ext.redirects, which can be used to
automatically add redirects for renamed documentation pages. (#68)FixedAdded locking toremote.shscript to avoid possible race conditions
during cleanup. (#69)0.7.0 (November 7, 2019)AddedAdded support forsphinx.ext.doctest, which can be used to automatically
test code snippets in docstrings. (#67)ChangedUpdated theblackversion used inpre-commithooks. (#67)0.6.0 (October 30, 2019)AddedAdded aremote.shCI script template for remotely executing
commands on an SSH-accessible machine. (#65)FixedFixed a crash when a file contained the text “Automatically generated
by nengo-bones”, but was not present in the config file. (#61,#66)0.5.0 (September 3, 2019)AddedAddednengo_simulator,nengo_simloaderandnengo_neuronsoptions to thepytestsection of thesetup.cfgtemplate to
support testing changes in Nengo 3.0. (#58)ChangedThe default value forpytest.addoptsinsetup.cfghas been removed
because Nengo 3.0 does not require-pnengo.tests.options. (#58)0.4.2 (August 8, 2019)AddedAddedplt_dirnameoption to thepytestsection of thesetup.cfgtemplate to set the plot directory for pytest-plt. (#52)Addedplt_filename_dropoption to thepytestsection of thesetup.cfgtemplate to set pruning patterns for pytest-plt. (#52)Addedrng_saltoption to thepytestsection of thesetup.cfgtemplate to set the salt for pytest-rng. (#55)0.4.1 (July 26, 2019)AddedAddedallclose_tolerancesoption to thepytestsection of thesetup.cfgtemplate to set tolerances for pytest-allclose. (#47)0.4.0 (July 26, 2019)AddedAdded style guide and release instructions to documentation. (#44)Added templates for.pre-commit-config.yamlandpyproject.tomlso downstream repositories can easily adopt Black. (#49)ChangedWe now check that Python source files are autoformatted with Black
in thestatic.shscript. (#49)Templates will now be autoformatted with Black during the rendering
process, if Black is installed. (#49)Take advantage of multiprocessing to speed up pylint static checks. (#49)TheE203flake8 check andbad-continuationpylint check are now
disabled by default. (#50)0.3.0 (July 19, 2019)AddedThenengo_bones.templatesmodule was added to consolidate code
that loads and renders templates. (#45)ChangedThedocs/conf.pytemplate has been updated for new versions of
Nengo Sphinx Theme. (#46)static.shandexamples.shwill now check any notebooks in thedocsfolder (not justdocs/examples). (#46)bones-checknow checks that the content of the generated files
matches the expected content, rather than relying on version numbers.
This means most files will not need to be regenerated when new NengoBones
versions are released, and thatbones-checkwill be sensitive to changes
within a dev version. (#45)FixedThestatic.sh/examples.shscript will no longer fail if there are no
notebooks in thedocsfolder. (#46)0.2.1 (May 24, 2019)AddedAddedcodespell_ignore_wordsoption tostatic.sh.template,
which is a list of words thatcodespellwill ignore. (#35)Addedanalytics_idoption todocs_conf.py.template,
which will enable Google Analytics tracking. (#35)Changedcodespellwill now ignore_vendordirectories. (#36)FixedFixed an issue withstatic.sh.templatein which Python files
that were not converted from notebooks were deleted. (#16)0.2.0 (May 15, 2019)AddedAddedapt_installoption that can be set in thejobssection toapt installany customaptrequirements for a job. (#14)Added templates forCONTRIBUTING.rst,CONTRIBUTORS.rst,LICENSE.rst,MANIFEST.in,docs/conf.py,setup.cfg, andsetup.py(#17)Templates will now be automatically loaded from a<repo>/.templatesdirectory if it exists. When overriding existing templates, the built-in
templates can be accessed inincludeandextendtags with thetemplates/prefix. (#17)Addedflake8to the static check script. (#17)Added thebones-pr-numberscript to predict the next PR number for a
repository. This helps when writing a changelog entry before a PR has been
made. (#18)ChangedThe Python version is now specified by thepythonoption (instead ofpython_version), for consistency with.travis.yml. (#14)Allnengo-bonesscripts now start withbones-, to make them easier
to find with autocompletion.generate-bonesis nowbones-generate,
andcheck-bonesis nowbones-check. (#18)RemovedRemovedcondafrom the CI setup; all installations should be done
throughpipinstead. (#14)Removed the--template-diroption from thegenerate-bonesscript;
use a.templatesdirectory instead. (#17)FixedOrder of templated dicts should now be deterministic for
all Python versions. (#14)0.1.0 (April 15, 2019)Initial release of NengoBones!
Thanks to all of the contributors for making this possible!