Skip to main content

Tools for managing Nengo projects

Project description

Latest PyPI version Travis-CI build status Test coverage

Nengo Bones

The 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.yml configuration 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 in nengo-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 the nengo-bones templating system, so if you would like an example of how to use it, check out the source code.

Installation

We recommend installing nengo-bones using pip:

pip install nengo-bones

Or for the latest updates you can perform a developer installation:

git clone https://github.com/nengo/nengo-bones.git
pip install -e ./nengo-bones

Basic usage

The first step is to fill in the .nengobones.yml configuration file. You can use the one in this repository as a starting point, or see the documentation for 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.yml file:

bones-generate

See bones-generate --help or the documentation for a full list of command line options.

Documentation

Release History

0.7.1 (November 14, 2019)

Added

  • Added support for nengo_sphinx_theme.ext.redirects, which can be used to automatically add redirects for renamed documentation pages. (#68)

Fixed

  • Added locking to remote.sh script to avoid possible race conditions during cleanup. (#69)

0.7.0 (November 7, 2019)

Added

  • Added support for sphinx.ext.doctest, which can be used to automatically test code snippets in docstrings. (#67)

Changed

  • Updated the black version used in pre-commit hooks. (#67)

0.6.0 (October 30, 2019)

Added

  • Added a remote.sh CI script template for remotely executing commands on an SSH-accessible machine. (#65)

Fixed

  • Fixed 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)

Added

  • Added nengo_simulator, nengo_simloader and nengo_neurons options to the pytest section of the setup.cfg template to support testing changes in Nengo 3.0. (#58)

Changed

  • The default value for pytest.addopts in setup.cfg has been removed because Nengo 3.0 does not require -p nengo.tests.options. (#58)

0.4.2 (August 8, 2019)

Added

  • Added plt_dirname option to the pytest section of the setup.cfg template to set the plot directory for pytest-plt. (#52)

  • Added plt_filename_drop option to the pytest section of the setup.cfg template to set pruning patterns for pytest-plt. (#52)

  • Added rng_salt option to the pytest section of the setup.cfg template to set the salt for pytest-rng. (#55)

0.4.1 (July 26, 2019)

Added

  • Added allclose_tolerances option to the pytest section of the setup.cfg template to set tolerances for pytest-allclose. (#47)

0.4.0 (July 26, 2019)

Added

  • Added style guide and release instructions to documentation. (#44)

  • Added templates for .pre-commit-config.yaml and pyproject.toml so downstream repositories can easily adopt Black. (#49)

Changed

  • We now check that Python source files are autoformatted with Black in the static.sh script. (#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)

  • The E203 flake8 check and bad-continuation pylint check are now disabled by default. (#50)

0.3.0 (July 19, 2019)

Added

  • The nengo_bones.templates module was added to consolidate code that loads and renders templates. (#45)

Changed

  • The docs/conf.py template has been updated for new versions of Nengo Sphinx Theme. (#46)

  • static.sh and examples.sh will now check any notebooks in the docs folder (not just docs/examples). (#46)

  • bones-check now 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 Nengo Bones versions are released, and that bones-check will be sensitive to changes within a dev version. (#45)

Fixed

  • The static.sh/examples.sh script will no longer fail if there are no notebooks in the docs folder. (#46)

0.2.1 (May 24, 2019)

Added

  • Added codespell_ignore_words option to static.sh.template, which is a list of words that codespell will ignore. (#35)

  • Added analytics_id option to docs_conf.py.template, which will enable Google Analytics tracking. (#35)

Changed

  • codespell will now ignore _vendor directories. (#36)

Fixed

  • Fixed an issue with static.sh.template in which Python files that were not converted from notebooks were deleted. (#16)

0.2.0 (May 15, 2019)

Added

  • Added apt_install option that can be set in the jobs section to apt install any custom apt requirements for a job. (#14)

  • Added templates for CONTRIBUTING.rst, CONTRIBUTORS.rst, LICENSE.rst, MANIFEST.in, docs/conf.py, setup.cfg, and setup.py (#17)

  • Templates will now be automatically loaded from a <repo>/.templates directory if it exists. When overriding existing templates, the built-in templates can be accessed in include and extend tags with the templates/ prefix. (#17)

  • Added flake8 to the static check script. (#17)

  • Added the bones-pr-number script to predict the next PR number for a repository. This helps when writing a changelog entry before a PR has been made. (#18)

Changed

  • The Python version is now specified by the python option (instead of python_version), for consistency with .travis.yml. (#14)

  • All nengo-bones scripts now start with bones-, to make them easier to find with autocompletion. generate-bones is now bones-generate, and check-bones is now bones-check. (#18)

Removed

  • Removed conda from the CI setup; all installations should be done through pip instead. (#14)

  • Removed the --template-dir option from the generate-bones script; use a .templates directory instead. (#17)

Fixed

  • Order of templated dicts should now be deterministic for all Python versions. (#14)

0.1.0 (April 15, 2019)

Initial release of Nengo Bones! Thanks to all of the contributors for making this possible!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nengo-bones-0.7.1.tar.gz (59.3 kB view hashes)

Uploaded Source

Built Distribution

nengo_bones-0.7.1-py3-none-any.whl (43.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page